Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

FAQ Topic - What is a function statement? (2012-01-07)

0 views
Skip to first unread message

FAQ server

unread,
Jan 6, 2012, 7:00:03 PM1/6/12
to
-----------------------------------------------------------------------
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.

0 new messages