【发布时间】:2012-10-27 04:15:43
【问题描述】:
我在我的 JavaScript 中定义了以下函数:
function _snr(id) {
"use strict";
this.e = "something";
}
我通过 JSLint 运行我的代码,它建议我在函数中添加“use strict”。
当我执行e 现在会抛出未定义的错误。从一些初步调查来看,似乎不再定义用于引用 _snr 的 this。
我已阅读有关“使用严格”的信息,并发现它用于防止不安全的做法。有人能解释一下这有什么不安全的吗? “使用严格”实际上在做什么以及如何修复我的代码?
【问题讨论】:
-
是什么让您认为
this会引用_snr?this的值取决于您调用函数的方式。如果你正在做_snr(123),那么this将是全局对象,除非在严格模式下,它将是undefined。 -
我想这是假设您正在使用
this访问全局,这对 JSLint 来说是一个禁忌。当然,如果你使用的是new _snr,那就不是这样了。 -
严格模式目前在网络上几乎没用,关闭任何可以阻止 JSLint 说的选项。如果编写代码以使用严格模式功能,则在未实现它的浏览器中将失败。如果它没有利用严格模式,那么包含它是没有意义的(并且可能有害,正如您所发现的那样)。
-
@user1689607 我是 js 的菜鸟,如果我错了,请原谅我,但是当我在浏览器检查器中查看
this时,它指的是snr,我错过了什么吗? -
@Asad,那么我将如何访问全球?还是我根本不应该这样做?
标签: javascript jslint use-strict