Google Chrome 中的匿名函数表达式
Anonymous function expression in Google Chrome
我正在使用 Google Chrome 版本 52 64 位。
我发现如果我使用匿名函数表达式 ex.
// Anonymous function expression
var expressionFunc = function(){
return true;
};
变量expressionFunc
将保存分配的匿名函数,
但是它也给这个函数加了一个名字属性 expressionFunc
。
因此,如果我在控制台中执行 expressionFunc.name
,
它会给我 expressionFunc
.
据我所知,这个匿名函数表达式应该保持匿名,
并且变量引用的函数不能在函数名属性中包含变量名
为什么 chrome 将名称 属性 分配给匿名函数?
本页:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/name
这样说
Browsers that implement ES6 functions can infer the name of an
anonymous function from its syntactic position. For example:
var f = function() {};
console.log(f.name); // "f"
那个页面没有特别说明。
本页
http://www.2ality.com/2015/09/function-names-es6.html
这样说
With regard to names, arrow functions are like anonymous function
expressions:
const func = () => {};
console.log(func.name); // func
From now on, whenever you see an anonymous function expression, you
can assume that an arrow function works the same way.
的答案(由@bergi 引用)非常全面,并指向规范中的来源。
我正在使用 Google Chrome 版本 52 64 位。 我发现如果我使用匿名函数表达式 ex.
// Anonymous function expression
var expressionFunc = function(){
return true;
};
变量expressionFunc
将保存分配的匿名函数,
但是它也给这个函数加了一个名字属性 expressionFunc
。
因此,如果我在控制台中执行 expressionFunc.name
,
它会给我 expressionFunc
.
据我所知,这个匿名函数表达式应该保持匿名, 并且变量引用的函数不能在函数名属性中包含变量名
为什么 chrome 将名称 属性 分配给匿名函数?
本页:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/name
这样说
Browsers that implement ES6 functions can infer the name of an anonymous function from its syntactic position. For example:
var f = function() {};
console.log(f.name); // "f"
那个页面没有特别说明。
本页
http://www.2ality.com/2015/09/function-names-es6.html
这样说
With regard to names, arrow functions are like anonymous function expressions:
const func = () => {};
console.log(func.name); // func
From now on, whenever you see an anonymous function expression, you can assume that an arrow function works the same way.