3 回答

TA貢獻(xiàn)1816條經(jīng)驗 獲得超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貢獻(xiàn)1898條經(jīng)驗 獲得超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貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊
職能宣言 :
function
Binding標(biāo)識符(
Formalameters)
{
功能體}
回歸 (空)
eval
var r = eval("function f(){}");
console.log(r); // undefined
調(diào)用一個空的完成記錄是沒有意義的。怪不得function f(){}()不能工作。事實上,JS引擎甚至沒有嘗試調(diào)用它,括號被認(rèn)為是另一個語句的一部分。
但是,如果將函數(shù)包裝在括號中,它將成為一個函數(shù)表達(dá)式:
var r = eval("(function f(){})");
console.log(r); // function f(){}
函數(shù)表達(dá)式返回函數(shù)對象。因此你可以稱之為:(function f(){})().
添加回答
舉報