我測試了這個代碼在鉻56爲什麼javascript讓NaN在功能上被覆蓋?
我剛剛發現這個奇怪的代碼。
如果我輸入控制檯const NaN = '';
這個代碼,我得到這個消息,我的預期。 Uncaught SyntaxError: Identifier 'NaN' has already been declared at <anonymous>:1:1
,但是,如果我重寫功能NaN的關鍵字,這樣
function a(){ const NaN = ''; return NaN; }
返回空字符串''
爲什麼要使用JavaScript讓關鍵字可以在功能overrided?
可能因爲範圍界定的?如果已經在全局範圍內定義了'NaN',那麼你的全局定義不能對它進行遮蔽,但是一個局部定義會創建一個閉包,從而爲一個具有相同名稱的新標識創建一個「空間」。 –
NaN是全球性的財產,而不是關鍵字。 –
你爲什麼不能'var a = 1; const a = 2;'但你可以做'var a = 1;函數b(){const a = 2; }'。你不能重新定義一個'const'變量。在函數內部,它變成了一個不同的變量。 – JJJ