我无法理解为什么代码执行结果会-1
(仅限严格模式):
'use strict'
[0,1].indexOf(0)
是错误还是有其他原因?
注意:在正常模式下,它按预期工作:索引0为0
我尝试分析Polyfills code on mdn并且只知道为什么会发生这种情况:在某些情况下,严格模式this
不是指向窗口,而是指未定义的'。
答案 0 :(得分:4)
更像是引擎如何评估您的代码。
浏览器将其视为一行,而不是两行
'use strict'[0,1].indexOf(0)
评估为
's'.indexOf(0)
是-1
现在,如果您使用分号运行相同的代码,则会得到0
'use strict';
[0,1].indexOf(0)
答案 1 :(得分:1)
ASI踢你。
'use strict'; // NB
[0,1].indexOf(0)