我有一個名爲函數象下面這樣:重寫name屬性
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"
爲什麼這麼說?我錯過了哪個概念?
[MDN:function.name](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name)'[...]您無法更改名稱[...]'('這是一項實驗技術,是ECMAScript 6(Harmony)提案的一部分.') – 2015-02-10 11:59:49
但是爲什麼它在我嘗試改變?像我的例子中的foo.name ='aha'。 – 2015-02-10 12:01:24
因爲設置不可寫屬性不需要拋出一個錯誤:[jsfiddle demo](http://jsfiddle.net/s8sceLnp/) – 2015-02-10 12:05:27