今天刷到一道題:
function foo();
bar();
}
foo.name="test3";
var foo = new foo();
console.log(foo); // 輸出函式
console.log(foo.name); // foo
console.log(foo.name); // test1
原以為 倒數第二行輸出 "test3" 妥妥沒問題的,然而誰想到輸出的是 foo
後來一查
name 還是個屬性名,因此上式的foo.name 就是指foo 函式的名稱,因此就是 「foo」
但是這裡又想了,既然說 foo.name ='test3',那可不可以算是 給 foo 換乙個函式名,叫"test3",然後測試發現
function foo();
bar();
}
foo.name="test3";
var foo = new foo();
console.log(foo); // 輸出函式
console.log(test3.name); // test3 未定義
console.log(foo.name); // test1
想法是錯的,看來我可能有點鑽牛角尖了。
所以最後的結論就是,函式名.name == 函式名,而且不能被改變 / 重新賦值
然後還看到有相同的測試結果
所以最後的結論就是,命名的時候盡量不要用 name 、value 等作為變數名
python的保留字
保留字是python語言中一些已經被賦予特定意義的單詞,在軟體開發中,不允許使用保留字用於變數,函式,類模組以及其他物件的名稱。python保留字 and as assert break class continue def del elif else except finally for from...
Python包含的保留字
python 包含的保留字可以執行如下命令進行檢視 import keyword keyword.kwlist false none true and as assert break class continue def del elif else except finally for from g...
鞏固js(一)詞法結構 保留字一
break delete function return typeof case do if switch var catch else in this 單出乙個討論 void continue false instanceof throw while debugger finally new tr...