프로젝트에서 JS 엄격 모드를 사용하는 방법

php中世界最好的语言
풀어 주다: 2018-06-05 09:17:04
원래의
2007명이 탐색했습니다.

이번에는 프로젝트에서 JS 엄격 모드를 사용하는 방법과 프로젝트에서 JS 엄격 모드를 사용할 때 주의사항에 대해 알려드리겠습니다. 실제 사례를 살펴보겠습니다.

엄격 모드란 무엇인가요?

JS 코딩을 더욱 표준화하고, Javascript 구문의 불합리하고 느슨한 측면을 제거하고, 이상한 동작

어떻게 사용하나요?

다음 문자열을 추가하면 됩니다. 이 구문은 이전 버전과 호환됩니다. 엄격 모드를 지원하지 않는 JavaScript 엔진인 경우에는 할당되지 않은 문자열 리터럴로 간주되어 무시됩니다. 지원 엔진은 엄격 모드를 켭니다.

'use strict'

참고:

1. 전역 범위에서 사용되는 경우 전체 js 스크립트가 이 모드를 켭니다

2. 함수 내부에서만 사용되는 경우입니다. 내부적으로 활성화됨

function doSomething(){
 'use strict' 
 // 其他代码 
}
로그인 후 복사

Variables

1. 엄격 모드에서는 변수를 생성하는 시기와 방법에 제한이 있습니다. 우선, 비엄격 모드에서는 실수로 전역 변수를 생성하는 것이 허용되지 않습니다. 다음과 같이 전역 변수를 생성하는데, 엄격 모드에서는 불가능합니다

// 선언되지 않은 변수
// 비엄격 모드: 전역 변수 생성
// 엄격 모드: referenceError 오류 발생

2. 변수 이름에도 제한이 있습니다. 특히, Implements, 인터페이스, let, package, private 등과 같은 예약어를 변수 이름으로 사용할 수 없습니다.

객체 엄격 모드에서 객체를 작동하면 비엄격 모드보다 오류가 발생할 가능성이 더 높습니다. 다음 상황에서는 구문 오류가 발생합니다.

1. a TypeError

2. 속성에 삭제 연산자를 사용하면 TypeError

3가 발생합니다. 확장할 수 없는 객체에 속성을 추가하면 TypeError

Function이 발생합니다. 명명된

function

의 매개 변수는 고유해야 합니다

엄격 모드에서는 인수 개체의 동작도 다릅니다. 엄격 모드에서는 명명된 매개 변수의 값을 수정하면 인수 개체에도 반영됩니다. 하지만 엄격 모드에서는 이 두 값이 완전히 독립적입니다

function showValue(value){
 value = 'foo'
 console.log(value)
 console.log(arguments[0]) // 非严格模式 : 'foo' 严格模式 :'hello'
  
}   
showValu('hello')
로그인 후 복사

FunctionStrict 모드에서 함수의 매개변수는 고유해야 합니다

// 重名的参数
// 非严格模式中,没有错误,只能访问第一个参数
// 严格模式 :抛出错误 Uncaught SyntaxError: Duplicate parameter name not allowed in this context
function sum(num,num){
  'use strict'
  // do something 
}
로그인 후 복사

인수 개체In non -엄격 모드, 명명된 매개변수의 값을 수정하면 인수 개체에도 반영되지만 엄격 모드는 그렇지 않습니다. 이 두 값은 완전히 독립적입니다.

// 修改命名参数的值
// 非严格模式:修改会反应到arguments中
// 严格模式中不会反应到arguments中
function sum(num,num2){
  'use strict'
num=3
  console.log(arguments[0],num2)// 严格模式下输出为1,2 非严格模式下输出为3,2
}
sum(1,2)
로그인 후 복사

eval() 가장 큰 eval 함수의 변경 사항은 포함 컨텍스트에서 더 이상 변수나 함수를 생성하지 않는다는 것입니다.

// 使用eval函数创建变量
// 非严格模式中:弹出框弹窗 20
// 严格模式中:调用alert(x)时报错
function doSomething(){
  eval('var x=20')
  alert(x)
}
로그인 후 복사

엄격 모드에서는 eval( )을 사용할 수 있지만 이러한 부차 행이나 함수는 평가 중인 특수 범위에서만 유효할 수 있습니다. 다음 코드를 실행하면 문제가 없습니다.

'use strict'
var result=eval('x=1,y=13;x+y')
alert(result)
로그인 후 복사

여기서 eval 변수 x와 y를 선언한 다음 함께 추가하여 합계를 취소하므로 결과 변수의 값은 21입니다. x+y의 결과. 경고가 호출되면 x와 y가 더 이상 존재하지 않더라도 결과 변수의 값 모드에서 함수의 이 값은 지정된 값에 관계없이 항상 지정된 값입니다.

// 访问属性
// 非严格模式:访问全局实行
// 严格模式:抛出错误,因为this的值是null
var color = "red";
function displayColor() {
 alert(this.color);
}
displayColor(null);
로그인 후 복사

기타 변경 사항

在严格模式中with语句被抛弃掉了,在非严格模式中with语句能够改变解析标识符的路径,但在严格模式下,with语句被简化掉了,因此,在严格模式下使用with语句是导致语法错误

// with语句
// 非严格模式:允许
// 严格模式:抛出语法错误
with (location) {
 console.log(href);
}
로그인 후 복사

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读

js函数项目中常用方法总结

怎样使用原生js做出满天星效果

위 내용은 프로젝트에서 JS 엄격 모드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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