이번에는 프로젝트에서 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의 매개 변수는 고유해야 합니다 // 重命名参数的
// 非严格模式:没有错误,只能访问第二个参数,如果要访问第一个参数,就必须通过arguments
// 严格模式语法错误
function sum(num,num){
//do something
}
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语句是导致语法错误 相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章! 推荐阅读 위 내용은 프로젝트에서 JS 엄격 모드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!// with语句
// 非严格模式:允许
// 严格模式:抛出语法错误
with (location) {
console.log(href);
}