问题标签 [strict-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
621 浏览

javascript - 我们必须注意 JavaScript 的“严格模式”吗?

阅读 ECMAScript 5 的严格模式后,我了解到:

某些语言功能如此普遍,以至于执行运行时检查会产生相当大的性能成本。一些严格模式调整,加上要求用户提交的 JavaScript 是严格模式代码并以某种方式调用,大大减少了对这些运行时检查的需求。

其中一些调整可能是:

  • 永远不要在/方法中使用null/undefined作为第一个参数。callapply
  • 不要在函数内创建新的全局变量。

问题:

  1. 是否有一些以严格模式编写的 JavaScript 框架?所以我们可以相信我们的“严格”代码不会被浪费?

  2. strict mode无论如何我都应该开始关注吗?我的意思是它被盲目地采用为一种好的做法吗?

0 投票
9 回答
72029 浏览

javascript - 什么是“严格模式”,它是如何使用的?

我一直在查看Mozilla Developer Network上的 JavaScript 参考资料,并且遇到了一个名为"strict mode". 我读了一遍,我无法理解它的作用。有人可以简要解释(一般而言)它的目的是什么以及它是如何有用的吗?

0 投票
4 回答
6859 浏览

javascript - 在严格模式下获取对未知环境中全局对象的引用

在未知主机环境中以 ES5 严格模式获取全局对象的句柄的推荐方法是什么?

ECMAScript 没有提供一种内置方式来引用我所知道的全局对象。如果是这样,这就是我正在寻找的答案。

已知环境中,全局对象通常具有自引用属性。由于全局对象是全局作用域的VO,全局对象的属性是全局变量,所以我们可以使用它们从任何地方获取全局对象的句柄:

  • 在网络浏览器中,我们可以使用windowself

  • 在 node.js 中,我们可以使用global.

但是,并非所有主机环境都如此。据我所知,Windows Script Host 没有提供任何访问全局对象的方法。在 WSH 中获取全局对象的推荐方法似乎是this在不解析为对象的上下文中使用关键字。例如:

这种技术适用于任何主机环境,但不适用于严格模式,因为 undefined不会在严格模式下this引用全局对象:

如果 this 在严格模式代码中进行评估,则 this 值不会被强制转换为对象。null 或 undefined 的 this 值不会转换为全局对象,原始值也不会转换为包装器对象。通过函数调用(包括使用 Function.prototype.apply 和 Function.prototype.call 进行的调用)传递的 this 值不会将传递的 this 值强制传递给对象(10.4.3、11.1.1、15.3.4.3、15.3. 4.4)。

正如预期的那样,以下代码导致undefined


那么,无论严格模式如何,在任何环境中获取全局对象句柄的正确方法是什么?

顺便说一句,我目前的方法是嗅探引用全局对象的全局变量,如下所示:

...然后只需使用global. 我认为这是一个糟糕的解决方案,原因有很多,其中大部分是相当明显的,它并没有解决 WSH 问题。

0 投票
1 回答
12105 浏览

javascript - 如何从严格模式获取来电者?

严格代码和非严格代码可以混合使用。但是,即使对它的调用不是在严格的代码中,你也不能使用调用者。有人知道任何解决方法吗?

我试过这个:

0 投票
7 回答
18322 浏览

javascript - 有什么方法可以检查是否强制执行严格模式?

无论如何要检查是否强制执行严格模式“使用严格”,我们想为严格模式执行不同的代码,为非严格模式执行其他代码。寻找类似的功能isStrictMode();//boolean

0 投票
1 回答
8044 浏览

android - 严格模式违规列表

在 shell 中运行 adb logcat 我看到类似这样的东西

StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2

  1. policy=23 是什么意思?
  2. 什么是违规=2?

我正在寻找这个值的含义,但我找不到任何违反和政策列表的文档,或者我可能以一种糟糕的方式解释了我的搜索结果,但我会很感激对此的一些解释

0 投票
1 回答
220 浏览

android - Android StrictMode:误报或此示例有什么问题?

当某个条件(网站内容)为真时,我启用了这个 ToggleButton。

getSystemOnState(..) 连接到网络服务器,由于严格模式,这会导致异常。我使用 Handler 类的方式有什么问题?

0 投票
5 回答
6206 浏览

javascript - 可以在 FireBug 和 Chrome 的控制台中启用“严格模式”吗?

使用此页面:

Firebug 控制台提供:

但是这样就成功了:

即使您注释掉delete foo;以使脚本不会中断,删除bar仍然成功,尽管它“是全局对象的属性,因为它是通过变量声明创建的,因此具有DontDelete 属性”:

是否可以在 FireBug 和/或 Chrome 的控制台中启用“严格模式”?

0 投票
2 回答
304 浏览

javascript - 严格模式返回此无违规

我也想吃蛋糕:我想有一个方法,this当它绑定到一个对象时返回链接,但undefined在使用 null|undefined 范围调用它时返回。这似乎工作正常,但如果你把它放到JSLint 中,那么你会得到一个 Strict Violation 错误。我不需要使用严格模式,但似乎这应该是可能的并且它有效(打开控制台)。这可以吗和/或你怎么能达到这个效果?

如果您查看控制台:

0 投票
1 回答
359 浏览

javascript - 在 javascript 中使用 this 关键字时出现严格违规是什么意思?

有人可以给我这个建议。我刚开始使用 jslint,我收到一条错误消息“严格违反”,指向带有“dialog(this)”的行 -

我以前从未见过这条消息。这是什么意思?