js 保留字name 導致的誤解

2021-09-11 06:17:08 字數 934 閱讀 1334

今天刷到一道題:

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...