簡體   English   中英

Javascript:var myFunc = function()與var myFunc = function myFunc()

[英]Javascript: var myFunc = function() vs. var myFunc = function myFunc()

這些有什么區別?

var myFunc = function() {
  // ...
};

var myFunc = function myFunc() {
  // ...
};

在第二個示例中, arguments.callee.caller.name有效,但在第一個示例中無效。 第二語法有什么問題嗎?

第二個有一個名字,第一個沒有。 函數是具有屬性name對象。 如果函數是匿名的,則沒有名稱。

var a = function(){}; // anonymous function expression
a.name; //= empty

var a = function foo(){}; // named function expression
a.name; //= foo

函數文字中的name是可選的,如果省略(如在第一種情況下所示),則該函數被稱為匿名

這來自於Douglas Crockford的JavaScript:The Good Parts

函數文字包含四個部分。 第一部分是保留字功能 可選的第二部分是函數的名稱。 該函數可以使用其名稱進行遞歸調用。 調試器和開發工具也可以使用該名稱來標識該功能。 如前一個示例所示,如果未給函數指定名稱,則稱其為匿名

第一個函數沒有名字。

將函數分配給變量不會賦予函數名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM