잘 정리해보자
'use strict'; 사용 본문
‘use strict’
: 선언 한 경우 엄격한 스크립트가 적용되며, 실수 코딩들을 에러로 반환한다.
'use strict'를 선언하지 않고 진행한 실수코딩들은 에러로 인식되지 않으며 결과값은 undefined이나 문제없이 진행이 된다.
(함수 안에서 사용하거나 스크립트 전체에서 사용 할 수 있음.)
1. 함수 안에서 선언한 경우
- 함수 안에서 전역 변수 선언 시 에러로 처리 된다.
ex )
function test(){
‘use strict’;
str = “wow”;
console.log(str);
}
test();
> 실행결과 : Uncaught ReferenceError: str is not defined (에러로 처리됨)
- 함수의 파라미터 값이 중복일 경우 에러로 반환
ex )
function test(a,a,c){
‘use strict’;
return a+c;
}
> 실행결과 : Uncaught SyntaxError: Duplicate parameter name not allowed in this context
함수 선언과 동시에 에러 발생한다.
('use strict' 빼고 실행 할 경우 에러 처리가 안되며, 파라미터 중복이 계산에서는 뒤에 파라미터로 계산이 처리된다.)
- 이상한 변수 선언 후 호출 하면 에러로 반환된다.
ex )
function test(){
'use strict’;
(22).sail = "home”;
"with".you = "te”;
}
test();
> 실행결과 : Uncaught TypeError: Cannot create property 'sail' on number '22'
at wow2 (<anonymous>:1:41)
at <anonymous>:1:1
function test(){
(22).sail = "home”;
"with".you = "te”;
}
test();
> 실행결과 : undefined
‘use strict’선언하지 않은 채로 진행 한 경우 에러로 처리되지 않고 진행이 된다.
함수 안에서 선언한 변수들을 console로 확인해도 undefined로 리턴 된다.
2. 전역으로 사용한 경우
- 8진수를 그냥 초기화 할 수 없고, 0o (숫자+영어) 를 붙이면 사용 할 수 있다.
ex )
'use strict’;
var str8 = 0644;
> 실행결과 : Uncaught SyntaxError: Octal literals are not allowed in strict mode.
'use strict’;
var str8 = 0o644;
console.log(str8);
> 실행결과 : 420
같은 숫자를 0o 붙이고 선언하니 제대로 변환되었다.
- 숫자를 계산 할 경우 0이 맨 앞자리에 있는 경우 에러로 반환
ex )
'use strict’;
var sum = 05 + 10 + 1;
> 실행결과 : Uncaught SyntaxError: Octal literals are not allowed in strict mode.
- Eval을 변수로 선언 할 수 없다.
ex )
'use strict’;
var eval = “w”;
> 실행결과 : Uncaught SyntaxError: Unexpected eval or arguments in strict mode
'javascript' 카테고리의 다른 글
Promise 쓰기 (비동기 통신 시 사용) (0) | 2021.04.13 |
---|---|
let, const 선언 (0) | 2021.04.11 |
Lint (린트) (0) | 2021.04.11 |
Babel (바벨) (0) | 2021.04.11 |
웹펙 - 로더 (loader) (0) | 2021.04.10 |