ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • "use strict"
    JQuery/JQuery UI 2022. 4. 1. 11:43
    (function ($, window, document){
        "use strict";  <!-- 코드 맨 앞에 문자열 리터럴 형태로 하나의 행을 쓴다. -->
        ...
        ...
    })(jQuery, window, window.document);
    Strict Mode?
    함수 호출에서 제공한대로 값이 정확하게 사용됨을 의미

     

    • 특징
      1. 디버깅이 쉬워진다.
        javascript오류는 아니지만 함정이 될 어떤 일을 오류가 발생하도록 변경하여 제거한다.
        => 코드의 문제를 더 빨리 알리고 소스로 더 빨리 안내한다.
      2. 빠르게 수행할 수 있다.
        javascript엔진의 최적화 처리를 어렵게 만드는 오류를 수정한다.
      3. 발생가능한 에러를 예방한다.
        미래의 ECMAScript로 정의될 예정 구문을 금지한다.

      4. 전역 스코프에 명시
        => 스크립트 전체가 strict 모드로 실행
      5. 함수 안에서 "use strict" 사용
        => 해당 함수만 strict 모드로 실행
      6. "use strict"모드의 시작행 이전 부분은 해당되지 않는다.
      7. 단순히 { }를 생성한 임의의 블록 구문에는 적용할 수 없다.
      8. 대표적인 블록 스코프에서 또한 아무 일도 일어나지 않는다.
    // 6
    x = 3.14;
    "use strict";
    
    // 7
    {
        'use strict';
        x = 3.14;
    } // 3.14
    
    // 8
    for(i = 0; i < 1; i++ {
        'use strict';
        x = 3.14;
    } // 3.14

     

    • 주요 이점
      • 우발적인 global을 방지한다.
        => strict모드가 없으면 선언되지 않은 변수에 값을 할당 시 해당 이름의 전역 변수가 자동으로 생성된다. (JS에서 가장 일반적인 오류 중 하나)
        => strict 모드에서는 오류 발생

      • this coercion을 제거한다.
        => strict모드가 없으면 this의 null또는 undefined값에 대한 참조가 자동으로 전역에 강제된다. (버그 발생)
        => strict 모드에서 this를 null 또는 undefined값으로 참조하면 오류가 발생한다.
      • 중복 매개변수 값을 허용하지 않는다.
        => strict모드는 함수에 대해 이름이 지정된 중복 인수를 감지하면 오류를 발생시킨다.

    function foo (val1, val2, val1) { }; // undefined
    
    'use strict'
    function foo (val1, val2, val1) { }; // Uncaught SyntaxError: Duplicate parameter name not allowed in this context

     

     

    [ 참고 ]

    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode

     

    Strict mode - JavaScript | MDN

    엄격 모드는 평범한 JavaScript 시멘틱스에 몇가지 변경이 일어나게 합니다.

    developer.mozilla.org

     

    https://m.blog.naver.com/on21life/221654555798

Designed by Tistory.