Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #15694 > unrolled thread

FAQ Topic - What is a function statement? (2012-09-05)

Started by"FAQ server" <javascript@dotinternet.be>
First post2012-09-04 23:00 +0000
Last post2012-09-05 11:09 -0400
Articles 2 — 2 participants

Back to article view | Back to comp.lang.javascript


Contents

  FAQ Topic - What is a function statement? (2012-09-05) "FAQ server" <javascript@dotinternet.be> - 2012-09-04 23:00 +0000
    Re: FAQ Topic - What is a function statement? (2012-09-05) Jim T. <x@y.z> - 2012-09-05 11:09 -0400

#15694 — FAQ Topic - What is a function statement? (2012-09-05)

From"FAQ server" <javascript@dotinternet.be>
Date2012-09-04 23:00 +0000
SubjectFAQ Topic - What is a function statement? (2012-09-05)
Message-ID<504687f9$0$295$14726298@news.sunsite.dk>
-----------------------------------------------------------------------
FAQ Topic - What is a function statement?
-----------------------------------------------------------------------

The term function statement has been widely and wrongly used to
describe a `FunctionDeclaration`. This is misleading because in ECMAScript,
a `FunctionDeclaration` is not a Statement; there are places in a program
where a Statement is permitted but a `FunctionDeclaration` is not. To add
to this confusion, some implementations, notably Mozillas', provide a
syntax extension called function statement. This is allowed under
section 16 of ECMA-262, Editions 3 and 5.

Example of nonstandard function statement:

// Nonstandard syntax, found in GMail source code. DO NOT USE.
try {
// FunctionDeclaration not allowed in Block.
function Fze(b,a){return b.unselectable=a}
/*...*/
} catch(e) { _DumpException(e) }

Code that uses function statement has three known interpretations. Some
implementations process `Fze` as a Statement, in order. Others, including
JScript, evaluate `Fze` upon entering the execution context that it
appears in. Yet others, notably DMDScript and default configuration of BESEN,
throw a `SyntaxError`.

For consistent behavior across implementations, _do not use function
statement_; use either `FunctionExpression` or `FunctionDeclaration` instead.

Example of `FunctionExpression` (valid):

var Fze;
try {
Fze = function(b,a){return b.unselectable=a};
/*...*/
} catch(e) { _DumpException(e) }

Example of `FunctionDeclaration` (valid):

// Program code
function aa(b,a){return b.unselectable=a}

<URL: http://jibbering.com/faq/example/functionStatement.html>
<URL: https://mail.mozilla.org/pipermail/es-discuss/2008-February/005314.html>
<URL: http://groups.google.com/group/comp.lang.javascript/msg/aa9a32d0c6ae0342>
<URL: http://groups.google.com/group/comp.lang.javascript/msg/3987eac87ad27966>
<URL: http://nanto.asablo.jp/blog/2005/12/10/172622> (Article in Japanese)


The complete comp.lang.javascript FAQ is at
http://jibbering.com/faq/

-- 

The sendings of these daily posts are proficiently hosted
by http://www.pair.com.

[toc] | [next] | [standalone]


#15707

FromJim T. <x@y.z>
Date2012-09-05 11:09 -0400
Message-ID<gmqe48pjsbl6qu00ko6a9ou6ougen9h257@4ax.com>
In reply to#15694
On Tue, 04 Sep 2012 23:00:02 +0000, "FAQ server"
<javascript@dotinternet.be> wrote:

>-----------------------------------------------------------------------
>FAQ Topic - What is a function statement?
>-----------------------------------------------------------------------
>
>The term function statement has been widely and wrongly used to
>describe a `FunctionDeclaration`. This is misleading because in ECMAScript,
>a `FunctionDeclaration` is not a Statement; there are places in a program
>where a Statement is permitted but a `FunctionDeclaration` is not. To add
>to this confusion, some implementations, notably Mozillas', provide a
>syntax extension called function statement. This is allowed under
>section 16 of ECMA-262, Editions 3 and 5.
>
>Example of nonstandard function statement:
>
>// Nonstandard syntax, found in GMail source code. DO NOT USE.
>try {
>// FunctionDeclaration not allowed in Block.
>function Fze(b,a){return b.unselectable=a}
>/*...*/
>} catch(e) { _DumpException(e) }

Uh oh. More fixing to do...

>Code that uses function statement has three known interpretations. Some
>implementations process `Fze` as a Statement, in order. Others, including
>JScript, evaluate `Fze` upon entering the execution context that it
>appears in. Yet others, notably DMDScript and default configuration of BESEN,
>throw a `SyntaxError`.
>
>For consistent behavior across implementations, _do not use function
>statement_; use either `FunctionExpression` or `FunctionDeclaration` instead.
>
>Example of `FunctionExpression` (valid):
>
>var Fze;
>try {
>Fze = function(b,a){return b.unselectable=a};
>/*...*/
>} catch(e) { _DumpException(e) }
>
>Example of `FunctionDeclaration` (valid):
>
>// Program code
>function aa(b,a){return b.unselectable=a}
>
><URL: http://jibbering.com/faq/example/functionStatement.html>
><URL: https://mail.mozilla.org/pipermail/es-discuss/2008-February/005314.html>
><URL: http://groups.google.com/group/comp.lang.javascript/msg/aa9a32d0c6ae0342>
><URL: http://groups.google.com/group/comp.lang.javascript/msg/3987eac87ad27966>
><URL: http://nanto.asablo.jp/blog/2005/12/10/172622> (Article in Japanese)
>
>
>The complete comp.lang.javascript FAQ is at
>http://jibbering.com/faq/

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.javascript


csiph-web