当我在 Chrome 中运行此代码时,出现未捕获类型错误:无法读取未定义的属性“concat”
function _log()
{
'use strict'
[this].concat(Array.from(arguments)).forEach(
function (obj) { console.log(obj) }
)
}
_log('foo', 'bar');
我不明白为什么会这样。 [this]
怎么可能是未定义的?即使 this
未定义,[this]
仍然应该是一个数组,不是吗?
一个有趣的细节是,当我从函数中删除 use strict
行时,错误消失并且代码按预期运行,将函数上下文和参数分别记录在新行中。
在严格模式下使用关键字 this
是否有我不知道的特殊之处?
谢谢。
最佳答案
这是一个有趣的错误:
您只是忘记了 'use strict'
之后的分号,这完全改变了代码的解析方式:
'use strict'[this].concat...
您正在使用“use strict
”链中名为 [Object window]"
的属性。当然它是 undefined
,所以它没有任何名为 "concat"
的属性。
关于javascript - [this] 如何在严格模式下未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570092/