JS 엄격 모드 예시 설명

小云云
풀어 주다: 2018-03-01 09:07:52
원래의
1324명이 탐색했습니다.

이 글은 주로 JS strict 모드에서 관련된 지식 포인트와 코드 예제를 모아 놓은 것입니다. 관심이 있으신 분은 편집자를 따라가서 함께 학습해 보시기 바랍니다.

소위 엄격 모드는 실제로 어떤 변수에도 할당되지 않는 문자열 "use strict"입니다.

이 프롬프트가 전역 범위에 제공되면 전체 스크립트가 엄격 모드를 사용합니다. 함수에서만 엄격 모드를 켤 수도 있습니다

1. 엄격 모드에는 전역 변수가 없습니다

a="test"

엄격 모드에서는 오류가 보고되지만 비엄격 모드에서는 정상입니다. mode

2. 변수 삭제

var에는 세 가지 선언 상황이 있습니다.

  • var 선언된 전역 변수

  • var 선언된 지역 변수

  • eval() 전역 변수가

에 선언되었습니다.

first, second 이 경우 삭제를 이용하여 삭제할 수 없습니다.

첫 번째 경우에 선언된 전역 개체는 Windows의 속성이지만 이 속성은 configurable=false이므로 삭제할 수 없습니다.

두 번째 경우에는 로컬 변수가 더 나쁩니다. 첨부된 객체는 누구도 접근할 수 없습니다. 어떻게 삭제하는지 모르겠습니다.

세 번째 경우인 eval()에 대해서는 나중에 설명하겠습니다.

주제로 돌아갑니다. 즉, 비엄격 모드에서는 변수를 삭제할 수 있지만 실패하고 false를 반환합니다.

엄격 모드에서 변수를 삭제하면 오류가 보고됩니다.

3. 개체

다음 상황에서는 개체를 작동할 때 오류가 보고됩니다.

  1. 읽기 전용 속성을 할당하면 오류가 보고됩니다.

  2. 구성할 수 없는 속성에 대해 삭제를 사용하면 오류 보고

  3. 확장 불가능합니다. 객체에 속성을 추가하면 오류가 보고됩니다

  4. 객체 리터럴을 사용할 때 속성 이름은 고유해야 합니다. 예를 들어


var person={
  name:"1",
  name:"2"
}
로그인 후 복사

은 비엄격 모드에서 두 번째 값이 기본값으로 설정되고, 엄격 모드에서는 오류가 보고됩니다.

4. 함수

Strict 모드에서는 함수 매개변수 이름이 고유해야 합니다.


function(n,n){
  // todo
}
로그인 후 복사

비엄격 모드에서는 이 함수 선언이 오류를 보고하지 않으며 두 번째 매개변수만 다음을 통해 액세스할 수 있습니다. 매개변수 이름은 인수를 통해 액세스해야 합니다.

두 모드의 인수도 다릅니다

비엄격 모드에서는 명명된 매개변수의 값을 수정하면 인수 개체에 반영되지만, 엄격 모드에서는 두 값이 독립적입니다.

args.callee(함수 자체 참조) 및args.caller(호출 함수 참조)를 제거합니다.

엄격 모드에서는 함수 이름에 js 예약어를 사용할 수 없습니다.

** 엄격 모드에서 함수는 스크립트의 최상위 수준과 함수 내부에서만 선언할 수 있습니다. if 문에서 함수를 선언하면 오류가 발생합니다. 구문 오류입니다. **


if(true){
  function(){
   // 严格模式下报错
}
}
로그인 후 복사

5.this

비엄격 모드에서 apply(), call() 함수를 사용할 때 전달된 null 또는 정의되지 않은 값은 전역 개체로 변환됩니다. 엄격 모드에서 함수의 this는 지정된 값에 관계없이 항상 지정된 값입니다.


var a="1";
function test(){
 console.log(this.a)
}
test.call(null) 在非严格模式下会输出1,严格模式下this就指代的就是null,null没有a属性,就会报错。
로그인 후 복사

관련 권장 사항:

JS 구문 분석 순서 및 범위 및 엄격 모드에 대한 간략한 소개

js 구문 분석 순서 및 범위 엄격 모드 구문 분석

JavaScript 엄격 모드의 이에 대한 정보 문제 설명


위 내용은 JS 엄격 모드 예시 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿