javascript - 在调用它之前检查 Javascript 中的严格模式兼容性

标签 javascript ecmascript-5 strict

我很好奇以下代码是否有任何问题,用于在调用它之前测试 Javascript 严格模式兼容性:

(function() { "use strict"; return this; })() || "use strict";

我担心它要么太笨重,要么由于某种原因无法正常工作。

更新

罗伯特在下面很好地回答了我的问题。我想我会把它放在这里以供将来引用以供他人引用。来自 John Resig 的“ECMAScript 5 Strict Mode, JSON, and More”:

[T]he syntax that’s used to enable strict mode...[is] simply a string in a single statement that happens to contain the contents “use strict”. No new syntax is introduced in order to enable strict mode. This is huge. This means that you can turn strict mode on in your scripts – today – and it’ll have, at worst, no side effect in old browsers.

最佳答案

支票不会起作用,也不需要。如果浏览器不支持严格模式,它将简单地将严格模式声明视为字符串文字表达式,这是一个完全有效的表达式,没有副作用。

在支持严格模式的浏览器中需要严格模式时,直接使用声明即可。

在任何情况下,严格模式声明都需要独立存在,而不是更大表达式的一部分,否则即使支持严格模式的现代浏览器也会将其视为普通的无意义字符串文字。

关于javascript - 在调用它之前检查 Javascript 中的严格模式兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090861/

相关文章:

javascript - 在没有 defineProperty 的情况下覆盖对象 getter

javascript - 哪种 JavaScript OOP 设计模式最能利用(新的)ECMAScript 5 特性?

typescript - "use strict"为 TypeScript 代码添加了什么?

javascript - Webpack Hot Module Replacement 即使在设置后仍然需要完全刷新

javascript - 页面加载后动态注入(inject)新的 Angular JS Controller 和 html

javascript - 使用常用方法将“替换为”在 JavaScript Azure Function 中不起作用

javascript - 如何使用 javascript 下载此文件?

javascript - ES6 到 ES5 需要帮助修复

javascript - Douglas Crockford 的 Strict Mode Example 是不是错了?

javascript - 为什么这个javascript在严格模式下没有错误