我有一个如下命名函数:
var foo = function ninjaFunc(){
};
在控制台中检查其名称,我找到了“ninjaFunc”,这是预期的:
console.log(foo.name); //-> "ninjaFunc"
我刚刚将foo.name
重新分配给'aha'
。它运行没有任何错误。
foo.name = 'aha'; //compiles without error
但重新审核foo.name
,我又找到了“ninjaFunc”。但我认为它是“aha”,因为编译器在指定它时没有引发错误。
console.log(foo.name); //-> "ninjaFunc"
为什么这样?我缺少哪个概念?
答案 0 :(得分:-1)
ECMAScript的规范性参考是ECMA-262,即语言规范。当前标准ES5未指定function instances的名称属性。
然而,第6版的草案在§19.2.4.2中完成:
此属性具有{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true}。
其中说你不能按§6.1.7.1写信给它(可写:false)。
实施可能已经实施了ed。 6行为与否。您需要测试各种浏览器以确定支持(例如,IE 6以及可能的更高版本不支持它。)