javascript - 是否可以判断一个函数是否处于严格模式?

标签 javascript

我的问题可能听起来很奇怪,但是有没有办法通过从另一个函数调用来了解一个函数是否处于严格模式?

function a(){
    "use strict";
    // Body
}

function b(){
// Body
}

function isStrict(fn){

    fn.call();
}

isStrict(a); // true
isStrict(b); // false

最佳答案

当函数受严格模式影响时,会在前面添加"use strict";。因此,以下检查就可以了:

function isStrict(fn) {
    return typeof fn == 'function' &&
        /^function[^(]*\([^)]*\)\s*\{\s*(["'])use strict\1/.test(fn.toString())
        || (function(){ return this === undefined;})();
}

我使用正则表达式在函数主体的开头查找“use strict” 模式。

要检测全局严格模式(这也会影响函数),我会 test one of the features查看严格模式是否处于事件状态。

关于javascript - 是否可以判断一个函数是否处于严格模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531511/

相关文章:

javascript - 在 TypeScript 中使用 Angular $httpProvider

javascript - 如何让 Visual Studio 自动格式化尊重 JSDoc 注释?

javascript - 对 8 位 PCM 信号进行 FFT

javascript - 如何使用 Validator 和 Control Value Accessor 正确实现嵌套表单?

javascript - 使用javascript编辑所有外部链接

javascript - 减慢 html anchor 链接

javascript - 如何根据链接包含的字母/单词查找并单击链接

javascript - 有什么方法可以快速轻松地将整个网站的标准网站加载转换为 AJAX?

javascript - jQuery 仅选择具有直接子元素的元素

javascript - 如何在javascript中从CSS类对象获取值