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