jslint: why does this code result in a “Strict violation” error message?

谁都会走 提交于 2019-11-30 17:32:53

I had a look at the source code of jslint, which says:

function reservevar(s, v) {
    return reserve(s, function () {
        if (this.id === 'this' || this.id === 'arguments' ||
                this.id === 'eval') {
            if (strict_mode && funct['(global)']) {
                warning("Strict violation.", this);
            } else if (option.safe) {
                warning("ADsafe violation.", this);
            }
        }
        return this;
    });
}

I guess that jslint really complains that you are using this in a global context.

To expand on Roland Illig's answer:

In non-strict mode, this is bound to the global scope when it isn't bound to anything else. In strict mode it is undefined. That makes it an error to use it outside of a method.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!