strict mode
팀 러버덕 by Hoon
strict mode란?
function random() {
x = "얘가 출력 될까요?";
}
random();
console.log(x);
위의 코드 결과의 실행값을 예상해보세요
strict mode 적용
'use strict';
function random() {
x = "얘가 출력 될까요?"; // ReferenceError!
}
random();
console.log(x);
위의 코드 결과의 실행값을 예상해보세요
전역에는 strict mode 사용 금지!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
'use strict';
</script>
<script>
x = 1; // 에러가 발생하지 않습니다!
</script>
<script>
'use strict';
y = 1; // Reference Error!
</script>
</body>
</html>
strict mode는 선언한 스크립트에만 적용된다!
함수단위로도 strict mode 사용 금지!
function thisIsStrict() {
'use strict';
x = 10; // Reference Error
}
function thisAint() {
y = 10
}
함수마다 다 use strict를 적용하는건 너무나 번거롭다!
그럼 strict mode는 무얼 하나요?
암묵적 전역 방지
매개변수 이름의 중복 방지
'use strict';
function itsStrict() {
x = 1;
}
console.log(x) // reference error!
"use strict";
function itsStrict(num, num) {
return num + num;
}
console.log(itsStrict(10, 201));
strict mode 사용시 주의점
일반 함수의 this
arguments 객체
"use strict";
function thisTest() {
console.log(this); // undefined
}
function ConstructorFunction() {
console.log(this); // ConstructorFunction {}
}
new ConstructorFunction();
"use strict";
function double(num) {
num = 10;
console.log(arguments);
return num * 2;
}
double(2); // { 0: 2 }
정적 프로퍼티 메서드
function Article(title, content, publishedDate = new Date()) {
this.title = title;
this.content = content;
this.publishedAt = publishedDate;
}
// prototype method
Article.prototype.getArticleInfo = function () {
return `${this.title}: ${
this.content.length < 20 ? `${this.content.slice(0, 20)}...` : this.content
}`;
};
// static property
Article.publisher = "Hoon";
Article.isRecentlyPublished = function (articleInstance) {
return (
(new Date().getTime() - articleInstance.publishedAt.getTime()) /
(1000 * 60 * 60 * 24 * 3)
);
};
const post = new Article("제목", "내용", new Date());
console.log(post);
정적 프로퍼티 메서드
Article 생성자 함수
prototype
Article.prototype
constructor
Article
post1
title
new 키워드로 생성
자바스크립트
[[Prototype]]
Function.prototype
constructor
Object.prototype
constructor
Object
...
...
Function
...
...
[[Prototype]]
[[Prototype]]
[[Prototype]]
content
글 내용..
publishedAt
2022-...
getArticleInfo
<function>
프로토타입에 등록된 메소드!
publisher
isRecentlyPublished
hoon
<function>
생성자 함수에 등록된 static 프로퍼티
11. strict mode
By hoonnotes
11. strict mode
- 62