programing tip

엄격 모드가 적용되었는지 확인할 수있는 방법이 있습니까?

itbloger 2020. 11. 17. 07:53
반응형

엄격 모드가 적용되었는지 확인할 수있는 방법이 있습니까?


어쨌든 엄격 모드 'use strict'가 적용되었는지 확인하고 엄격 모드에 대해 다른 코드를 실행하고 비 엄격 모드에 대해 다른 코드를 실행하고 싶습니다. 같은 기능을 찾고isStrictMode();//boolean


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

저는 예외를 사용하지 않고 전역적인 것뿐만 아니라 어떤 상황에서도 작동하는 것을 선호합니다.

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

엄격 모드 eval에서는 외부 컨텍스트에 새 변수를 도입하지 않는다는 사실을 사용합니다 .


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

이미 답변을받은 것 같습니다. 하지만 이미 코드를 작성했습니다. 그래서 여기


네, this있습니다 'undefined'엄격 모드에있을 때 전역 메서드 내에서.

function isStrictMode() {
    return (typeof this == 'undefined');
}

보다 우아한 방법 : "this"가 객체 인 경우 true로 변환

"use strict"

var strict = ( function () { return !!!this } ) ()

if ( strict ) {
    console.log ( "strict mode enabled, strict is " + strict )
} else {
    console.log ( "strict mode not defined, strict is " + strict )
}

또 다른 솔루션은 Strict 모드에서 선언 된 변수 eval가 외부 범위에 노출되지 않는다는 사실을 활용할 수 있습니다.

function isStrict() {
    var x=true;
    eval("var x=false");
    return x;
}

참고 URL : https://stackoverflow.com/questions/10480108/is-there-any-way-to-check-if-strict-mode-is-enforced

반응형