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

Checking for strict mode compatibility in Javascript before invoking it

本文关键字:模式 兼容性 Javascript 调用 检查      更新时间:2023-09-26

我很好奇,如果有任何错误与以下代码意味着测试Javascript严格模式的兼容性之前调用它:

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

我担心它要么太笨重,要么因为某些原因不能实际工作。

Robert很好地回答了我下面的问题。我想我应该把这个放在这里,以供将来参考,为其他人的利益。摘自John Resig的《ECMAScript 5严格模式,JSON和更多》:

[T]用于启用严格模式的语法…[是]只是一个字符串在一个单独的语句,碰巧包含内容" use strict "。没有引入新的语法来启用严格模式。这是巨大的。这意味着你可以在你的脚本中打开严格模式-今天-它将有,最坏的情况下,在旧的浏览器中没有副作用。

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

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

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