3 回答

TA贡献1816条经验 获得超6个赞
FunctionDeclaration
FunctionExpression
FunctionDeclaration
function Identifier ( FormalParameterListopt ) { FunctionBody }
FunctionExpression
function Identifieropt ( FormalParameterListopt ) { FunctionBody }
Identifier
FunctionExpression
(function () { alert(2 + 2);}());
(function foo() { alert(2 + 2);}());
function foo () {} // FunctionDeclaration0,function foo () {} // FunctionExpression
FunctionDeclaration
FunctionExpression
FunctionDeclaration
Program
FunctionBody
if (true) {
function foo() {
alert('true');
}
} else {
function foo() {
alert('false!');
}
}
foo(); // true? false? why?
SyntaxError
Block
'false!'
.
FunctionDeclaration
var multiply = new Function("x", "y", "return x * y;");
function multiply(x, y) { return x * y;}
var multiply = function (x, y) { return x * y;};
var multiply = function func_name(x, y) { return x * y;};

TA贡献1898条经验 获得超8个赞
function someName() { alert(2 + 2);}();
function someName() { alert(2 + 2);}();
var a = function b() { // do something};a(); // worksb(); // doesn't workvar c = function d() { window.setTimeout(d, 1000); // works};

TA贡献1796条经验 获得超4个赞
职能宣言 :
function
Binding标识符(
Formalameters)
{
功能体}
回归 (空)
eval
var r = eval("function f(){}");
console.log(r); // undefined
调用一个空的完成记录是没有意义的。怪不得function f(){}()不能工作。事实上,JS引擎甚至没有尝试调用它,括号被认为是另一个语句的一部分。
但是,如果将函数包装在括号中,它将成为一个函数表达式:
var r = eval("(function f(){})");
console.log(r); // function f(){}
函数表达式返回函数对象。因此你可以称之为:(function f(){})().
添加回答
举报