84

とにかくストリクトモード'usestrict'が適用されているかどうかを確認する方法はありますか?ストリクトモード用に別のコードを実行し、非ストリクトモード用に他のコードを実行したいです。のような機能を探していますisStrictMode();//boolean

4

7 に答える 7

115

グローバルコンテキストで呼び出された関数の内部がグローバルオブジェクトを指さないという事実は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
于 2012-05-07T10:08:11.907 に答える
26
function isStrictMode() {
    try{var o={p:1,p:2};}catch(E){return true;}
    return false;
}

すでに回答を得ているようです。しかし、私はすでにいくつかのコードを書いています。だからここに

于 2012-05-07T10:36:33.710 に答える
12

はい、厳密モードの場合はグローバルメソッド内にありますthis'undefined'

function isStrictMode() {
    return (typeof this == 'undefined');
}
于 2012-05-07T10:07:40.007 に答える