严格模式下javascript indexOf()方法的意外结果

时间:2018-03-23 13:57:08

标签: javascript arrays indexof mode strict

我无法理解为什么代码执行结果会-1(仅限严格模式):

'use strict'
[0,1].indexOf(0)

是错误还是有其他原因? 注意:在正常模式下,它按预期工作:索引0为0

我尝试分析Polyfills code on mdn并且只知道为什么会发生这种情况:在某些情况下,严格模式this不是指向窗口,而是指未定义的'。

2 个答案:

答案 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)