javascript - [this] 如何在严格模式下未定义?

标签 javascript this strict-mode

当我在 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/

相关文章:

javascript - this.someFunction 不是函数

android - 严格模式违规列表

powershell - 动态参数取默认值

syntax - 如何在 CoffeeScript fat-arrow 回调中引用实际的 'this' ?

javascript - 如何在运行时更新 cytoscape.js 图形

javascript - css 选择器或 xpath 选择器

javascript - Javascript 无法正确读取 ASCII > 128 的字符

java - Java的 "this"中 ".addActionListener(this)"关键字指的是什么

javascript - 什么是 "strict mode",它是如何使用的?

javascript - document.execCommand 仅适用于按钮而不适用于链接?