首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法检查严格模式是否强制执行?

有没有办法检查严格模式是否强制执行?
EN

Stack Overflow用户
提问于 2012-05-07 18:00:04
回答 7查看 17.7K关注 0票数 83

是否有任何检查严格模式‘使用严格’是强制的,我们想要执行不同的代码为严格模式和其他代码的非严格模式。寻找像isStrictMode();//boolean这样的函数

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-05-07 18:08:12

在全局上下文中调用的函数中的this不会指向全局对象,这一事实可用于检测严格模式:

var isStrict = (function() { return !this; })();

演示:

> echo '"use strict"; var isStrict = (function() { return !this; })(); console.log(isStrict);' | node
true
> echo 'var isStrict = (function() { return !this; })(); console.log(isStrict);' | node
false
票数 113
EN

Stack Overflow用户

发布于 2013-09-20 20:26:28

我更喜欢不使用异常的东西,它可以在任何环境下工作,而不仅仅是全局的:

var mode = (eval("var __temp = null"), (typeof __temp === "undefined")) ? 
    "strict": 
    "non-strict";

它利用了严格模式下的eval不会在外部上下文中引入新变量的事实。

票数 30
EN

Stack Overflow用户

发布于 2012-05-07 18:36:34

function isStrictMode() {
    try{var o={p:1,p:2};}catch(E){return true;}
    return false;
}

看来你已经有答案了。但我已经写了一些代码。所以在这里

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10480108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档