【发布时间】:2016-09-01 10:33:26
【问题描述】:
我使用的是 Google Chrome 版本 52 64 位。 我发现如果我使用匿名函数表达式 ex.
// Anonymous function expression
var expressionFunc = function(){
return true;
};
变量expressionFunc 将保存分配的匿名函数,
但它也在这个函数中添加了一个名称属性expressionFunc。
因此,如果我在控制台中执行expressionFunc.name,
它会给我expressionFunc。
据我所知,这个匿名函数表达式应该保持匿名, 并且变量引用的函数不应在函数的name属性中包含变量名。
为什么 chrome 将 name 属性分配给匿名函数?
【问题讨论】:
-
据我了解,您不是在这里创建匿名函数,您只是用不同的语法声明函数。对于更了解标准的人来说很高兴。匿名函数更像 (function () { alert(true); })();
-
在 Firefox 中的行为有所不同,表明它并不明确。
-
这称为内联匿名函数表达式。此函数没有名称,因此它是匿名内联函数,并且对变量的赋值使其成为内联匿名函数表达式
-
抱歉忘记添加:
(function () { alert(true); })();你的函数叫做自调用匿名函数。 -
此代码:
var expressionFunc = function somename(){}; console.log expressionFunc.name;在所有浏览器中显示somename。只有 Chrome 为原始问题中的匿名函数命名。 (尝试过的浏览器:Edge、Firefox、Opera、Chrome)
标签: javascript google-chrome anonymous-function function-expression