我测试了这个代码在铬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