참고: 할당 문을 둘러싼 ( .. )
는 선언 없이 객체 리터럴(object literal) 비구조화 할당을 사용할 때 필요한 구문입니다.
{a, b} = {a:1, b:2}
는 유효한 독립 구문이 아닙니다. 좌변의 {a, b}
이 객체 리터럴이 아닌 블록으로 간주되기 때문입니다.
하지만, ({a, b} = {a:1, b:2})
는 유효한데, var {a, b} = {a:1, b:2}
와 같습니다.
( .. )
표현식 앞에는 세미콜론이 있어야 합니다. 그렇지 않을 경우 이전 줄과 연결되어 함수를 실행하는데 이용될 수 있습니다.
@@ -206,8 +208,8 @@ var a, b;
객체로부터 속성을 해체하여 객체의 원래 속성명과는 다른 이름의 변수에 할당할 수 있습니다.
```js
-var o = {p: 42, q: true};
-var {p: foo, q: bar} = o;
+var o = { p: 42, q: true };
+var { p: foo, q: bar } = o;
console.log(foo); // 42
console.log(bar); // true
@@ -218,7 +220,7 @@ console.log(bar); // true
객체로부터 해체된 값이 `undefined`인 경우, 변수에 기본값을 할당할 수 있습니다.
```js
-var {a = 10, b = 5} = {a: 3};
+var { a = 10, b = 5 } = { a: 3 };
console.log(a); // 3
console.log(b); // 5
@@ -229,7 +231,7 @@ console.log(b); // 5
새로운 변수명 할당과 기본값 할당을 한번에 할 수 있습니다.
```js
-var {a: aa = 10, b: bb = 5} = {a: 3};
+var { a: aa = 10, b: bb = 5 } = { a: 3 };
console.log(aa); // 3
console.log(bb); // 5
@@ -242,7 +244,7 @@ console.log(bb); // 5
```js
function drawES5Chart(options) {
options = options === undefined ? {} : options;
- var size = options.size === undefined ? 'big' : options.size;
+ var size = options.size === undefined ? "big" : options.size;
var cords = options.cords === undefined ? { x: 0, y: 0 } : options.cords;
var radius = options.radius === undefined ? 25 : options.radius;
console.log(size, cords, radius);
@@ -251,21 +253,25 @@ function drawES5Chart(options) {
drawES5Chart({
cords: { x: 18, y: 30 },
- radius: 30
+ radius: 30,
});
```
#### ES2015 버전
```js
-function drawES2015Chart({size = 'big', cords = { x: 0, y: 0 }, radius = 25} = {}) {
+function drawES2015Chart({
+ size = "big",
+ cords = { x: 0, y: 0 },
+ radius = 25,
+} = {}) {
console.log(size, cords, radius);
// 차트 그리기 수행
}
drawES2015Chart({
cords: { x: 18, y: 30 },
- radius: 30
+ radius: 30,
});
```
@@ -275,23 +281,26 @@ drawES2015Chart({
```js
var metadata = {
- title: "Scratchpad",
- translations: [
- {
- locale: "de",
- localization_tags: [ ],
- last_edit: "2014-04-14T08:43:37",
- url: "/de/docs/Tools/Scratchpad",
- title: "JavaScript-Umgebung"
- }
- ],
- url: "/ko/docs/Tools/Scratchpad"
+ title: "Scratchpad",
+ translations: [
+ {
+ locale: "de",
+ localization_tags: [],
+ last_edit: "2014-04-14T08:43:37",
+ url: "/de/docs/Tools/Scratchpad",
+ title: "JavaScript-Umgebung",
+ },
+ ],
+ url: "/ko/docs/Tools/Scratchpad",
};
-var { title: englishTitle, translations: [{ title: localeTitle }] } = metadata;
+var {
+ title: englishTitle,
+ translations: [{ title: localeTitle }],
+} = metadata;
console.log(englishTitle); // "Scratchpad"
-console.log(localeTitle); // "JavaScript-Umgebung"
+console.log(localeTitle); // "JavaScript-Umgebung"
```
### for of 반복문과 구조 분해
@@ -303,22 +312,25 @@ var people = [
family: {
mother: "Jane Smith",
father: "Harry Smith",
- sister: "Samantha Smith"
+ sister: "Samantha Smith",
},
- age: 35
+ age: 35,
},
{
name: "Tom Jones",
family: {
mother: "Norah Jones",
father: "Richard Jones",
- brother: "Howard Jones"
+ brother: "Howard Jones",
},
- age: 25
- }
+ age: 25,
+ },
];
-for (var {name: n, family: { father: f } } of people) {
+for (var {
+ name: n,
+ family: { father: f },
+} of people) {
console.log("Name: " + n + ", Father: " + f);
}
@@ -329,11 +341,11 @@ for (var {name: n, family: { father: f } } of people) {
### 함수 매개변수로 전달된 객체에서 필드 해체하기
```js
-function userId({id}) {
+function userId({ id }) {
return id;
}
-function whois({displayName: displayName, fullName: {firstName: name}}){
+function whois({ displayName: displayName, fullName: { firstName: name } }) {
console.log(displayName + " is " + name);
}
@@ -341,9 +353,9 @@ var user = {
id: 42,
displayName: "jdoe",
fullName: {
- firstName: "John",
- lastName: "Doe"
- }
+ firstName: "John",
+ lastName: "Doe",
+ },
};
console.log("userId: " + userId(user)); // "userId: 42"
@@ -368,7 +380,7 @@ console.log(foo); // "bar"
[Rest/Spread Properties for ECMAScript](https://github.com/tc39/proposal-object-rest-spread) 제안(stage 3)에서는 구조 분해에 [rest](/ko/docs/Web/JavaScript/Reference/Functions/rest_parameters) 구문을 추가하고 있습니다. rest 속성은 구조 분해 패턴으로 걸러지지 않은 열거형 속성의 키를 가진 나머지 항목들을 모읍니다.
```js
-let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
+let { a, b, ...rest } = { a: 10, b: 20, c: 30, d: 40 };
a; // 10
b; // 20
rest; // { c: 30, d: 40 }
@@ -379,8 +391,8 @@ rest; // { c: 30, d: 40 }
구조 분해는 JavaScript {{glossary("Identifier", "식별자")}} 이름으로 적합하지 않은 속성명이 제공된 경우에도 이용할 수 있습니다. 이 때는 대체할 유효한 식별자명을 제공해야 합니다.
```js
-const foo = { 'fizz-buzz': true };
-const { 'fizz-buzz': fizzBuzz } = foo;
+const foo = { "fizz-buzz": true };
+const { "fizz-buzz": fizzBuzz } = foo;
console.log(fizzBuzz); // "true"
```
diff --git a/files/ko/web/javascript/reference/operators/division/index.md b/files/ko/web/javascript/reference/operators/division/index.md
index 380713a0e1bc3a..947aa2bd84c69c 100644
--- a/files/ko/web/javascript/reference/operators/division/index.md
+++ b/files/ko/web/javascript/reference/operators/division/index.md
@@ -2,6 +2,7 @@
title: 나누기 (/)
slug: Web/JavaScript/Reference/Operators/Division
---
+
{{jsSidebar("Operators")}}
나누기 연산자(`/`)는 왼쪽 피연산자를 피제수, 오른쪽 피연산자를 제수로 하여 몫을 구합니다.
@@ -11,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Division
## 구문
```js
-x / y
+x / y;
```
## 예제
@@ -19,21 +20,21 @@ x / y
### 기본 나눗셈
```js
-1 / 2 // 0.5
+1 / 2; // 0.5
-Math.floor(3 / 2) // 1
+Math.floor(3 / 2); // 1
-1.0 / 2.0 // 0.5
+1.0 / 2.0; // 0.5
```
### 0으로 나누기
```js
-2.0 / 0 // Infinity
+2.0 / 0; // Infinity
-2.0 / 0.0 // Infinity, 0.0 === 0이기 때문
+2.0 / 0.0; // Infinity, 0.0 === 0이기 때문
-2.0 / -0.0 // -Infinity
+2.0 / -0.0; // -Infinity
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/division_assignment/index.md b/files/ko/web/javascript/reference/operators/division_assignment/index.md
index ecd9b849d2d1e6..13f073d4dad64c 100644
--- a/files/ko/web/javascript/reference/operators/division_assignment/index.md
+++ b/files/ko/web/javascript/reference/operators/division_assignment/index.md
@@ -2,6 +2,7 @@
title: 나누기 할당 (/=)
slug: Web/JavaScript/Reference/Operators/Division_assignment
---
+
{{jsSidebar("Operators")}}
나누기 할당 연산자(`/=`)는 오른쪽 피연산자의 값으로 변수를 나눈 결과를 다시 변수에 할당합니다.
@@ -11,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Division_assignment
## 구문
```js
-x /= y // x = x / y
+x /= y; // x = x / y
```
## 예제
@@ -22,10 +23,10 @@ x /= y // x = x / y
// bar = 5
// 위와 같은 변수를 가정하고, 아래의 모든 연산을 순서대로 실행할 때
-bar /= 2 // 2.5
-bar /= 2 // 1.25
-bar /= 0 // Infinity
-bar /= 'foo' // NaN
+bar /= 2; // 2.5
+bar /= 2; // 1.25
+bar /= 0; // Infinity
+bar /= "foo"; // NaN
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/equality/index.md b/files/ko/web/javascript/reference/operators/equality/index.md
index f944e4fd38dd1c..5f2d861b3da8bd 100644
--- a/files/ko/web/javascript/reference/operators/equality/index.md
+++ b/files/ko/web/javascript/reference/operators/equality/index.md
@@ -2,8 +2,9 @@
title: 동등 연산자(==)
slug: Web/JavaScript/Reference/Operators/Equality
l10n:
- sourceCommit:3e2369d97e2d6fbfe33a3c496a8edd90e0b539e2
+ sourceCommit: 3e2369d97e2d6fbfe33a3c496a8edd90e0b539e2
---
+
{{jsSidebar("Operators")}}
동등 연산자(==)는 두 개의 피연산자가 동일한지 확인하며, 불리언 결과를 반환합니다. [일치 연산자](/ko/docs/Web/JavaScript/Reference/Operators/Strict_equality)와는 다르게 다른 타입의 피연산자들끼리의 비교를 시도합니다.
@@ -48,41 +49,41 @@ x == y
### 타입변환 없이 비교
```js
-1 == 1; // true
-"hello" == "hello"; // true
+1 == 1; // true
+"hello" == "hello"; // true
```
### 타입변환을 이용한 비교
```js
-"1" == 1; // true
-1 == "1"; // true
-0 == false; // true
-0 == null; // false
-0 == undefined; // false
-0 == !!null; // true, look at Logical NOT operator
-0 == !!undefined; // true, look at Logical NOT operator
-null == undefined; // true
+"1" == 1; // true
+1 == "1"; // true
+0 == false; // true
+0 == null; // false
+0 == undefined; // false
+0 == !!null; // true, look at Logical NOT operator
+0 == !!undefined; // true, look at Logical NOT operator
+null == undefined; // true
const number1 = new Number(3);
const number2 = new Number(3);
-number1 == 3; // true
-number1 == number2; // false
+number1 == 3; // true
+number1 == number2; // false
```
### 객체들 간의 비교
```js
const object1 = {
- "key": "value",
-}
+ key: "value",
+};
const object2 = {
- "key": "value",
+ key: "value",
};
-console.log(object1 == object2) // false
-console.log(object1 == object1) // true
+console.log(object1 == object2); // false
+console.log(object1 == object1); // true
```
### String과 String objects의 비교
@@ -105,9 +106,9 @@ console.log(string4 == string4); // true
### Dates와 문자열의 비교
```js
-const d = new Date('December 17, 1995 03:24:00');
+const d = new Date("December 17, 1995 03:24:00");
const s = d.toString(); // for example: "Sun Dec 17 1995 03:24:00 GMT-0800 (Pacific Standard Time)"
-console.log(d == s); //true
+console.log(d == s); //true
```
### 배열과 문자열의 비교
diff --git a/files/ko/web/javascript/reference/operators/exponentiation/index.md b/files/ko/web/javascript/reference/operators/exponentiation/index.md
index c5b210a204660e..822eef22456460 100644
--- a/files/ko/web/javascript/reference/operators/exponentiation/index.md
+++ b/files/ko/web/javascript/reference/operators/exponentiation/index.md
@@ -13,7 +13,7 @@ slug: Web/JavaScript/Reference/Operators/Exponentiation
## 구문
```js
-x ** y
+x ** y;
```
## 설명
@@ -46,19 +46,19 @@ PHP, Python 등 거듭제곱 연산자(`**`)를 포함하는 언어의 대부분
### 기본 거듭제곱
```js
-2 ** 3 // 8
-3 ** 2 // 9
-3 ** 2.5 // 15.588457268119896
-10 ** -1 // 0.1
-NaN ** 2 // NaN
+2 ** 3; // 8
+3 ** 2; // 9
+3 ** 2.5; // 15.588457268119896
+10 ** -1; // 0.1
+NaN ** 2; // NaN
```
### 연관성
```js
-2 ** 3 ** 2 // 512
-2 ** (3 ** 2) // 512
-(2 ** 3) ** 2 // 64
+2 ** 3 ** 2; // 512
+2 ** (3 ** 2); // 512
+(2 ** 3) ** 2; // 64
```
### 단항 연산자와 사용하기
@@ -66,13 +66,13 @@ NaN ** 2 // NaN
거듭제곱 결과의 부호를 반전하려면,
```js
--(2 ** 2) // -4
+-(2 ** 2); // -4
```
거듭제곱 표현식의 밑에 음수를 제공하려면,
```js
-(-2) ** 2 // 4
+(-2) ** 2; // 4
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/exponentiation_assignment/index.md b/files/ko/web/javascript/reference/operators/exponentiation_assignment/index.md
index ff0bee7309c228..475a7c8ab97367 100644
--- a/files/ko/web/javascript/reference/operators/exponentiation_assignment/index.md
+++ b/files/ko/web/javascript/reference/operators/exponentiation_assignment/index.md
@@ -2,6 +2,7 @@
title: 거듭제곱 할당 (**=)
slug: Web/JavaScript/Reference/Operators/Exponentiation_assignment
---
+
{{jsSidebar("Operators")}}
거듭제곱 할당 연산자(`**=`)는 오른쪽 피연산자의 값으로 변수를 거듭제곱한 결과를 다시 변수에 할당합니다.
@@ -11,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Exponentiation_assignment
## 구문
```js
-x **= y // x = x ** y
+x **= y; // x = x ** y
```
## 예제
@@ -22,8 +23,8 @@ x **= y // x = x ** y
// bar = 5
// 위와 같은 변수를 가정할 때
-bar **= 2 // 25
-bar **= 'foo' // NaN
+bar **= 2; // 25
+bar **= "foo"; // NaN
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/function/index.md b/files/ko/web/javascript/reference/operators/function/index.md
index 496a231db7a05c..d8f7355169c601 100644
--- a/files/ko/web/javascript/reference/operators/function/index.md
+++ b/files/ko/web/javascript/reference/operators/function/index.md
@@ -37,47 +37,46 @@ slug: Web/JavaScript/Reference/Operators/function
자바스크립트에서 함수 표현식은 {{jsxref("Statements/function", "함수 선언", "#Function_declaration_hoisting")}}과는 달리 끌어올려지지 않습니다. 함수 표현식을 정의하기 전에는 사용할 수 없습니다.
```js
- console.log(notHoisted) // undefined
- //even the variable name is hoisted, the definition wasn't. so it's undefined.
- notHoisted(); // TypeError: notHoisted is not a function
+console.log(notHoisted); // undefined
+//even the variable name is hoisted, the definition wasn't. so it's undefined.
+notHoisted(); // TypeError: notHoisted is not a function
- var notHoisted = function() {
- console.log('bar');
- };
+var notHoisted = function () {
+ console.log("bar");
+};
```
### 유명(named) 함수 표현식
-함수 몸통 안 쪽에서 현재 함수를 참고하고 싶다면, 유명 함수를 생성해야 합니다. ***이 함수 이름은 함수의 몸통(범위) 안에서만 사용할 수 있습니다***. 이로써 비표준 [`arguments.callee`](/ko/docs/Web/JavaScript/Reference/Functions/arguments/callee) 속성을 사용하는 것을 피할 수도 있습니다.
+함수 몸통 안 쪽에서 현재 함수를 참고하고 싶다면, 유명 함수를 생성해야 합니다. **_이 함수 이름은 함수의 몸통(범위) 안에서만 사용할 수 있습니다_**. 이로써 비표준 [`arguments.callee`](/ko/docs/Web/JavaScript/Reference/Functions/arguments/callee) 속성을 사용하는 것을 피할 수도 있습니다.
```js
- var math = {
- 'factit': function factorial(n) {
- console.log(n)
- if (n <= 1)
- return 1;
- return n * factorial(n - 1);
- }
- };
-
- math.factit(3) //3;2;1;
+var math = {
+ factit: function factorial(n) {
+ console.log(n);
+ if (n <= 1) return 1;
+ return n * factorial(n - 1);
+ },
+};
+
+math.factit(3); //3;2;1;
```
함수가 할당된 변수는 `name` 속성을 가지게됩니다. 다른 변수에 할당되더라도 그 name 속성의 값은 변하지 않습니다. 함수의 이름이 생략되었다면, name 속성의 값은 그 변수의 이름(암묵적 이름)이 될 것입니다. 함수의 이름이 있다면 name 속성의 값은 그 함수의 이름(명시적 이름)이 될 것입니다. 이는 [화살표 함수(arrow functions)](/ko/docs/Web/JavaScript/Reference/Functions/Arrow_functions)에도 적용됩니다 (화살표 함수는 이름을 가지지 않으므로 해당 변수에 암묵적인 이름만 줄 수 있습니다).
```js
- var foo = function() {}
- foo.name // "foo"
+var foo = function () {};
+foo.name; // "foo"
- var foo2 = foo
- foo2.name // "foo"
+var foo2 = foo;
+foo2.name; // "foo"
- var bar = function baz() {}
- bar.name // "baz"
+var bar = function baz() {};
+bar.name; // "baz"
- console.log(foo === foo2); // true
- console.log(typeof baz); // undefined
- console.log(bar === baz); // false (errors because baz == undefined)
+console.log(foo === foo2); // true
+console.log(typeof baz); // undefined
+console.log(bar === baz); // false (errors because baz == undefined)
```
## Examples
@@ -85,17 +84,17 @@ slug: Web/JavaScript/Reference/Operators/function
다음 예제는 이름 없는 함수를 정의하고 그 함수를 `x`에 할당합니다. 함수는 인수의 제곱을 반환합니다:
```js
- var x = function(y) {
- return y * y;
- };
+var x = function (y) {
+ return y * y;
+};
```
[callback](/ko/docs/Glossary/Callback_function)으로 더 자주 사용됩니다:
```js
- button.addEventListener('click', function(event) {
- console.log('button is clicked!')
- })
+button.addEventListener("click", function (event) {
+ console.log("button is clicked!");
+});
```
## 명세서
diff --git a/files/ko/web/javascript/reference/operators/function_star_/index.md b/files/ko/web/javascript/reference/operators/function_star_/index.md
index a1441f688a27b5..b862e9853770eb 100644
--- a/files/ko/web/javascript/reference/operators/function_star_/index.md
+++ b/files/ko/web/javascript/reference/operators/function_star_/index.md
@@ -35,8 +35,8 @@ slug: Web/JavaScript/Reference/Operators/function*
아래의 예제는 이름이 없는 generator function 을 정의하고 이를 x 에 할당합니다. function 은 인자로 들어온 값의 제곱을 생산(yield)합니다.
```js
-var x = function*(y) {
- yield y * y;
+var x = function* (y) {
+ yield y * y;
};
```
diff --git a/files/ko/web/javascript/reference/operators/grouping/index.md b/files/ko/web/javascript/reference/operators/grouping/index.md
index 2ecd09aea4fca5..3bf8229957b6ec 100644
--- a/files/ko/web/javascript/reference/operators/grouping/index.md
+++ b/files/ko/web/javascript/reference/operators/grouping/index.md
@@ -29,16 +29,16 @@ var b = 2;
var c = 3;
// 기본 우선순위
-a + b * c // 7
+a + b * c; // 7
// 이것과 같음
-a + (b * c) // 7
+a + (b * c); // 7
// 더하기를 곱하기보다 먼저 하도록
// 우선순위 변경
-(a + b) * c // 9
+(a + b) * c; // 9
// 이것과 같음
-a * c + b * c // 9
+a * c + b * c; // 9
```
## 명세서
diff --git a/files/ko/web/javascript/reference/operators/in/index.md b/files/ko/web/javascript/reference/operators/in/index.md
index 96d849e198356c..7c619760ca0579 100644
--- a/files/ko/web/javascript/reference/operators/in/index.md
+++ b/files/ko/web/javascript/reference/operators/in/index.md
@@ -10,7 +10,7 @@ slug: Web/JavaScript/Reference/Operators/in
## 구문
```js
- 속성 in 객체명
+속성 in 객체명;
```
### 인자
@@ -27,31 +27,39 @@ slug: Web/JavaScript/Reference/Operators/in
```js
// 배열
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
-0 in trees // true를 반환합니다.
-3 in trees // true를 반환합니다.
-(1 + 2) in trees // true를 반환합니다. 연산자 우선 순위에 의하여 이 구문의 괄호는 없어도 됩니다.
-6 in trees // false를 반환합니다.
-"bay" in trees // false를 반환합니다. 당신은 배열의 내용이 아닌, 인덱스 값을 명시하여야 합니다.
-"length" in trees // true를 반환합니다. length는 Array(배열) 객체의 속성입니다.
+0 in trees; // true를 반환합니다.
+3 in
+ trees(
+ // true를 반환합니다.
+ 1 + 2,
+ ) in
+ trees; // true를 반환합니다. 연산자 우선 순위에 의하여 이 구문의 괄호는 없어도 됩니다.
+6 in trees; // false를 반환합니다.
+"bay" in trees; // false를 반환합니다. 당신은 배열의 내용이 아닌, 인덱스 값을 명시하여야 합니다.
+"length" in trees; // true를 반환합니다. length는 Array(배열) 객체의 속성입니다.
// 미리 정의된 객체
-"PI" in Math // true를 반환합니다.
-"P" + "I" in Math // true를 반환합니다.
+"PI" in Math; // true를 반환합니다.
+"P" + "I" in Math; // true를 반환합니다.
// 사용자가 정의한 객체
-var myCar = {company: "Lamborghini", model: "Lamborghini Veneno Roadster", year: 2014};
-"company" in myCar // true를 반환합니다.
-"model" in myCar // true를 반환합니다.
+var myCar = {
+ company: "Lamborghini",
+ model: "Lamborghini Veneno Roadster",
+ year: 2014,
+};
+"company" in myCar; // true를 반환합니다.
+"model" in myCar; // true를 반환합니다.
```
당신은 반드시 `in` 연산자의 오른쪽에 객체를 명시하여야 합니다. 예컨대 당신은 `String` 생성자로 만들어진 문자열을 명시할 수 있지만 문자열 리터럴은 명시할 수 없습니다.
```js
var color1 = new String("green");
-"length" in color1 // true를 반환합니다.
+"length" in color1; // true를 반환합니다.
var color2 = "coral";
-"length" in color2 // color2는 String 객체가 아니기에 오류를 냅니다.
+"length" in color2; // color2는 String 객체가 아니기에 오류를 냅니다.
```
### 제거되었거나 정의되지 않은 속성에 대하여 `in` 연산자 사용하기
@@ -59,7 +67,11 @@ var color2 = "coral";
`in` 연산자는 [`delete`](/ko/docs/Web/JavaScript/Reference/Operators/delete) 연산자로 제거된 속성에 대하여 `false`를 반환합니다.
```js
-var myCar = {company: "Lamborghini", model: "Lamborghini Veneno Roadster", year: 2014};
+var myCar = {
+ company: "Lamborghini",
+ model: "Lamborghini Veneno Roadster",
+ year: 2014,
+};
delete myCar.company;
"company" in myCar; // false를 반환합니다.
@@ -71,7 +83,11 @@ delete trees[3];
만약 당신이 속성을 {{jsxref("Global_Objects/undefined", "undefined")}}로 설정하였는데 그것을 제거하지 않으면, `in` 연산자는 그 속성에 대하여 `true`를 반환합니다.
```js
-var myCar = {company: "Lamborghini", model: "Lamborghini Veneno Roadster", year: 2014};
+var myCar = {
+ company: "Lamborghini",
+ model: "Lamborghini Veneno Roadster",
+ year: 2014,
+};
myCar.company = undefined;
"company" in myCar; // true를 반환합니다.
```
diff --git a/files/ko/web/javascript/reference/operators/index.md b/files/ko/web/javascript/reference/operators/index.md
index c6d5fbe7b634fe..9cb3aa5a0863fe 100644
--- a/files/ko/web/javascript/reference/operators/index.md
+++ b/files/ko/web/javascript/reference/operators/index.md
@@ -2,6 +2,7 @@
title: 식 및 연산자
slug: Web/JavaScript/Reference/Operators
---
+
{{jsSidebar("Operators")}}
이 장은 JavaScript의 모든 연산자, 식 및 키워드를 나열합니다.
diff --git a/files/ko/web/javascript/reference/operators/inequality/index.md b/files/ko/web/javascript/reference/operators/inequality/index.md
index 5640d4700f3ae7..6278489903a2f7 100644
--- a/files/ko/web/javascript/reference/operators/inequality/index.md
+++ b/files/ko/web/javascript/reference/operators/inequality/index.md
@@ -12,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Inequality
## 구문
```js
-x != y
+x != y;
```
## 설명
@@ -20,9 +20,9 @@ x != y
부등식 연산자는 피연산자가 같지 않은지 여부를 확인합니다. [동등 연산자](/ko/docs/Web/JavaScript/Reference/Operators/Equality)의 부정이므로 다음 두 줄은 항상 같은 결과를 제공합니다.
```js
-x != y
+x != y;
-!(x == y)
+!(x == y);
```
비교 알고리즘에 대한 자세한 내용은 [동등 연산자](/ko/docs/Web/JavaScript/Reference/Operators/Equality) 페이지를 참조하십시오.
@@ -44,39 +44,39 @@ x != y
### 타입 변환이 없는 비교
```js
-1 != 2; // true
-"hello" != "hola"; // true
+1 != 2; // true
+"hello" != "hola"; // true
-1 != 1; // false
-"hello" != "hello"; // false
+1 != 1; // false
+"hello" != "hello"; // false
```
### 타입 변환이 있는 비교
```js
-"1" != 1; // false
-1 != "1"; // false
-0 != false; // false
-0 != null; // true
-0 != undefined; // true
-0 != !!null; // false, look at Logical NOT operator
-0 != !!undefined; // false, look at Logical NOT operator
-null != undefined; // false
+"1" != 1; // false
+1 != "1"; // false
+0 != false; // false
+0 != null; // true
+0 != undefined; // true
+0 != !!null; // false, look at Logical NOT operator
+0 != !!undefined; // false, look at Logical NOT operator
+null != undefined; // false
const number1 = new Number(3);
const number2 = new Number(3);
-number1 != 3; // false
-number1 != number2; // true
+number1 != 3; // false
+number1 != number2; // true
```
### 객체의 비교
```js
-const object1 = {"key": "value"}
-const object2 = {"key": "value"};
+const object1 = { key: "value" };
+const object2 = { key: "value" };
-object1 != object2 // true
-object2 != object2 // false
+object1 != object2; // true
+object2 != object2; // false
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/instanceof/index.md b/files/ko/web/javascript/reference/operators/instanceof/index.md
index 569d7d22dc03f3..f3e5dadf788115 100644
--- a/files/ko/web/javascript/reference/operators/instanceof/index.md
+++ b/files/ko/web/javascript/reference/operators/instanceof/index.md
@@ -2,6 +2,7 @@
title: instanceof
slug: Web/JavaScript/Reference/Operators/instanceof
---
+
{{jsSidebar("Operators")}}
**`instanceof` 연산자**는 생성자의 `prototype` 속성이 객체의 프로토타입 체인 어딘가 존재하는지 판별합니다.
@@ -11,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/instanceof
## 구문
```js
- object instanceof constructor
+object instanceof constructor;
```
### 매개변수
@@ -27,8 +28,8 @@ slug: Web/JavaScript/Reference/Operators/instanceof
```js
// 생성자 정의
-function C(){}
-function D(){}
+function C() {}
+function D() {}
var o = new C();
@@ -39,7 +40,7 @@ o instanceof C;
o instanceof D;
o instanceof Object; // true, 왜냐하면
-C.prototype instanceof Object // true
+C.prototype instanceof Object; // true
C.prototype = {};
var o2 = new C();
@@ -74,24 +75,24 @@ o3 instanceof C; // true, 왜냐하면 이제 C.prototype이 o3의 프로토타
```js
var simpleStr = "This is a simple string";
-var myString = new String();
-var newStr = new String("String created with constructor");
-var myDate = new Date();
-var myObj = {};
+var myString = new String();
+var newStr = new String("String created with constructor");
+var myDate = new Date();
+var myObj = {};
simpleStr instanceof String; // returns false, prototype chain을 확인하고, undefined를 찾는다.
-myString instanceof String; // returns true
-newStr instanceof String; // returns true
-myString instanceof Object; // returns true
+myString instanceof String; // returns true
+newStr instanceof String; // returns true
+myString instanceof Object; // returns true
-myObj instanceof Object; // returns true, undefined prototype 임에도 불구하고 true.
-({}) instanceof Object; // returns true, 위의 경우와 동일.
+myObj instanceof Object; // returns true, undefined prototype 임에도 불구하고 true.
+({}) instanceof Object; // returns true, 위의 경우와 동일.
-myString instanceof Date; // returns false
+myString instanceof Date; // returns false
-myDate instanceof Date; // returns true
-myDate instanceof Object; // returns true
-myDate instanceof String; // returns false
+myDate instanceof Date; // returns true
+myDate instanceof Object; // returns true
+myDate instanceof String; // returns false
```
### `mycar`는 타입 `Car`와 타입 `Object`임을 입증하기
@@ -105,7 +106,7 @@ function Car(make, model, year) {
this.year = year;
}
var mycar = new Car("Honda", "Accord", 1998);
-var a = mycar instanceof Car; // returns true
+var a = mycar instanceof Car; // returns true
var b = mycar instanceof Object; // returns true
```
diff --git a/files/ko/web/javascript/reference/operators/logical_and/index.md b/files/ko/web/javascript/reference/operators/logical_and/index.md
index 9ac470a8199f5b..b689a9f1a48fd0 100644
--- a/files/ko/web/javascript/reference/operators/logical_and/index.md
+++ b/files/ko/web/javascript/reference/operators/logical_and/index.md
@@ -41,9 +41,9 @@ expr1 && expr2
AND 연산자는 불리언이 아닌 값을 보존하고 다음과 같이 반환합니다.
```js
-result = '' && 'foo'; // result 에 ""(빈 문자열)이 할당됩니다
-result = 2 && 0; // result 에 0 이 할당됩니다
-result = 'foo' && 4; // result 에 4 가 할당됩니다.
+result = "" && "foo"; // result 에 ""(빈 문자열)이 할당됩니다
+result = 2 && 0; // result 에 0 이 할당됩니다
+result = "foo" && 4; // result 에 4 가 할당됩니다.
```
`&&` 연산자는 불리언이 아닌 피연산자와 함께 사용할 수 있지만, 반환 값은 항상 [원시형 불리언](/ko/docs/Web/JavaScript/Data_structures#boolean_타입)으로
@@ -70,11 +70,11 @@ result = 'foo' && 4; // result 에 4 가 할당됩니다.
```js
function A() {
- console.log('called A');
+ console.log("called A");
return false;
}
function B() {
- console.log('called B');
+ console.log("called B");
return true;
}
@@ -90,9 +90,9 @@ AND 연산자는 OR 연산자보다 높은 우선 순위를 가지며, 이는 `&
([연산자 우선순위](/ko/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)참고).
```js
-true || false && false // returns true
-true && (false || false) // returns false
-(2 === 3) || (4 < 0) && (1 === 1) // returns false
+true || false && false; // returns true
+true && (false || false); // returns false
+(2 === 3) || (4 < 0) && (1 === 1); // returns false
```
## 예제
@@ -102,15 +102,15 @@ true && (false || false) // returns false
다음 코드는 `&&`(논리적 AND) 연산자의 예를 보여줍니다.
```js
-a1 = true && true // t && t returns true
-a2 = true && false // t && f returns false
-a3 = false && true // f && t returns false
-a4 = false && (3 === 4) // f && f returns false
-a5 = 'Cat' && 'Dog' // t && t returns "Dog"
-a6 = false && 'Cat' // f && t returns false
-a7 = 'Cat' && false // t && f returns false
-a8 = '' && false // f && f returns ""
-a9 = false && '' // f && f returns false
+a1 = true && true; // t && t returns true
+a2 = true && false; // t && f returns false
+a3 = false && true; // f && t returns false
+a4 = false && 3 === 4; // f && f returns false
+a5 = "Cat" && "Dog"; // t && t returns "Dog"
+a6 = false && "Cat"; // f && t returns false
+a7 = "Cat" && false; // t && f returns false
+a8 = "" && false; // f && f returns ""
+a9 = false && ""; // f && f returns false
```
### 불리언을 위한 변환 규칙
@@ -120,13 +120,13 @@ a9 = false && '' // f && f returns false
**불리언**을 포함하는 아래 연산은
```js
-bCondition1 && bCondition2
+bCondition1 && bCondition2;
```
언제나 아래와 같습니다.
```js
-!(!bCondition1 || !bCondition2)
+!(!bCondition1 || !bCondition2);
```
#### OR을 AND로 변환하기
@@ -134,13 +134,13 @@ bCondition1 && bCondition2
**불리언**을 포함하는 다음 연산은
```js
-bCondition1 || bCondition2
+bCondition1 || bCondition2;
```
언제나 아래와 같습니다.
```js
-!(!bCondition1 && !bCondition2)
+!(!bCondition1 && !bCondition2);
```
### 중첩된 괄호 제거
@@ -150,13 +150,13 @@ bCondition1 || bCondition2
**불리언**을 포함하는 다음 복합적 연산은
```js
-bCondition1 || (bCondition2 && bCondition3)
+bCondition1 || (bCondition2 && bCondition3);
```
언제나 다음과 같습니다.
```js
-bCondition1 || bCondition2 && bCondition3
+bCondition1 || (bCondition2 && bCondition3);
```
## 명세서
diff --git a/files/ko/web/javascript/reference/operators/multiplication/index.md b/files/ko/web/javascript/reference/operators/multiplication/index.md
index 3aae32beb330a5..58636ab3cb63c3 100644
--- a/files/ko/web/javascript/reference/operators/multiplication/index.md
+++ b/files/ko/web/javascript/reference/operators/multiplication/index.md
@@ -12,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Multiplication
## 구문
```js
-x * y
+x * y;
```
## 예제
@@ -20,21 +20,21 @@ x * y
### 곱셈
```js
- 2 * 2 // 4
--2 * 2 // -4
+2 * 2; // 4
+-2 * 2; // -4
```
### Infinity 곱하기
```js
-Infinity * 0 // NaN
-Infinity * Infinity // Infinity
+Infinity * 0; // NaN
+Infinity * Infinity; // Infinity
```
### 숫자가 아닌 경우
```js
-'foo' * 2 // NaN
+"foo" * 2; // NaN
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/multiplication_assignment/index.md b/files/ko/web/javascript/reference/operators/multiplication_assignment/index.md
index 85b230069f94b7..4d206b0fe843e0 100644
--- a/files/ko/web/javascript/reference/operators/multiplication_assignment/index.md
+++ b/files/ko/web/javascript/reference/operators/multiplication_assignment/index.md
@@ -2,6 +2,7 @@
title: 곱하기 할당 (*=)
slug: Web/JavaScript/Reference/Operators/Multiplication_assignment
---
+
{{jsSidebar("Operators")}}
곱하기 할당 연산자(`*=`)는 오른쪽 피연산자의 값을 변수에 곱한 결과를 다시 변수에 할당합니다.
@@ -11,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Multiplication_assignment
## 구문
```js
-x *= y // x = x * y
+x *= y; // x = x * y
```
## 예제
@@ -22,8 +23,8 @@ x *= y // x = x * y
// bar = 5
// 위와 같은 변수를 가정할 때
-bar *= 2 // 10
-bar *= 'foo' // NaN
+bar *= 2; // 10
+bar *= "foo"; // NaN
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/new.target/index.md b/files/ko/web/javascript/reference/operators/new.target/index.md
index e306d49bd5c149..d686ba520c82e4 100644
--- a/files/ko/web/javascript/reference/operators/new.target/index.md
+++ b/files/ko/web/javascript/reference/operators/new.target/index.md
@@ -12,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/new.target
## 구문
```js
- new.target
+new.target;
```
## 설명
@@ -48,7 +48,11 @@ class A {
}
}
-class B extends A { constructor() { super(); } }
+class B extends A {
+ constructor() {
+ super();
+ }
+}
var a = new A(); // logs "A"
var b = new B(); // logs "B"
diff --git a/files/ko/web/javascript/reference/operators/new/index.md b/files/ko/web/javascript/reference/operators/new/index.md
index ac4806cd92d74d..cf41ec083b3500 100644
--- a/files/ko/web/javascript/reference/operators/new/index.md
+++ b/files/ko/web/javascript/reference/operators/new/index.md
@@ -11,8 +11,8 @@ slug: Web/JavaScript/Reference/Operators/new
## 구문
-```js
- new constructor[([arguments])]
+```js-nolint
+new constructor[([arguments])];
```
### 매개변수
@@ -48,18 +48,18 @@ function Car() {}
car1 = new Car();
car2 = new Car();
-console.log(car1.color); // undefined
+console.log(car1.color); // undefined
Car.prototype.color = "original color";
-console.log(car1.color); // original color
+console.log(car1.color); // original color
-car1.color = 'black';
-console.log(car1.color); // black
+car1.color = "black";
+console.log(car1.color); // black
-console.log(car1.__proto__.color) //original color
-console.log(car2.__proto__.color) //original color
-console.log(car1.color) // black
-console.log(car2.color) // original color
+console.log(car1.__proto__.color); //original color
+console.log(car2.__proto__.color); //original color
+console.log(car1.color); // black
+console.log(car2.color); // original color
```
## 예제
@@ -130,7 +130,7 @@ var car2 = new Car("Nissan", "300ZX", 1992, ken);
새로운 객체를 생성할 때 문자열이나 숫자 값을 넘겨주는 대신에, 위의 구문은 owner를 위한 매개변수로 `rand`와 `ken` 객체를 넘겨준다. `car2`의 owner name을 확인해보기 위해서, 다음의 속성에 접근할 수 있다:
```js
-car2.owner.name
+car2.owner.name;
```
## 명세서
diff --git a/files/ko/web/javascript/reference/operators/null/index.md b/files/ko/web/javascript/reference/operators/null/index.md
index a0074bd89306f6..d25974a23e28e3 100644
--- a/files/ko/web/javascript/reference/operators/null/index.md
+++ b/files/ko/web/javascript/reference/operators/null/index.md
@@ -1,5 +1,5 @@
---
-title: 'null'
+title: "null"
slug: Web/JavaScript/Reference/Operators/null
---
@@ -12,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/null
## 구문
```js
-null
+null;
```
## 설명
@@ -33,15 +33,15 @@ foo; //null
`null` 또는 `undefined`를 검사할 때, [동등 연산자(==)와 일치 연산자(===)의 차이](/ko/docs/Web/JavaScript/Reference/Operators)를 주의하세요. 동등 연산자는 자료형 변환을 수행합니다.
```js
-typeof null // "object" (하위호환 유지를 위해 "null"이 아님)
-typeof undefined // "undefined"
-null === undefined // false
-null == undefined // true
-null === null // true
-null == null // true
-!null // true
-isNaN(1 + null) // false
-isNaN(1 + undefined) // true
+typeof null; // "object" (하위호환 유지를 위해 "null"이 아님)
+typeof undefined; // "undefined"
+null === undefined; // false
+null == undefined; // true
+null === null; // true
+null == null; // true
+!null; // true
+isNaN(1 + null); // false
+isNaN(1 + undefined); // true
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/nullish_coalescing/index.md b/files/ko/web/javascript/reference/operators/nullish_coalescing/index.md
index 31ad6799b82c02..054fffcc5a9d12 100644
--- a/files/ko/web/javascript/reference/operators/nullish_coalescing/index.md
+++ b/files/ko/web/javascript/reference/operators/nullish_coalescing/index.md
@@ -17,7 +17,7 @@ original_slug: Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
## 문법
```js
- leftExpr ?? rightExpr
+leftExpr ?? rightExpr;
```
## 설명
@@ -53,12 +53,12 @@ console.log(message); // "hi!" and not ""
널 병합 연산자는 첫 번째 연산자가 `null` 또는 `undefined`로 평가될 때만, 두 번째 피연산자를 반환함으로써 이러한 위험을 피한다:
```js
-let myText = ''; // An empty string (which is also a falsy value)
+let myText = ""; // An empty string (which is also a falsy value)
-let notFalsyText = myText || 'Hello world';
+let notFalsyText = myText || "Hello world";
console.log(notFalsyText); // Hello world
-let preservingFalsy = myText ?? 'Hi neighborhood';
+let preservingFalsy = myText ?? "Hi neighborhood";
console.log(preservingFalsy); // '' (as myText is neither undefined nor null)
```
@@ -67,15 +67,24 @@ console.log(preservingFalsy); // '' (as myText is neither undefined nor null)
OR과 AND 같은 논리 연산자들과 마찬가지로, 만약 왼쪽이 `null` 또는 `undefined`가 아님이 판명되면 오른쪽 표현식은 평가되지 않는다.
```js
-function A() { console.log('A was called'); return undefined;}
-function B() { console.log('B was called'); return false;}
-function C() { console.log('C was called'); return "foo";}
-
-console.log( A() ?? C() );
+function A() {
+ console.log("A was called");
+ return undefined;
+}
+function B() {
+ console.log("B was called");
+ return false;
+}
+function C() {
+ console.log("C was called");
+ return "foo";
+}
+
+console.log(A() ?? C());
// logs "A was called" then "C was called" and then "foo"
// as A() returned undefined so both expressions are evaluated
-console.log( B() ?? C() );
+console.log(B() ?? C());
// logs "B was called" then "false"
// as B() returned false (and not null or undefined), the right
// hand side expression was not evaluated
@@ -93,7 +102,7 @@ true || undefined ?? "foo"; // raises a SyntaxError
그러나 우선 순위를 명시적으로 나타내기 위해 괄호를 사용하면 가능하다:
```js
-(null || undefined ) ?? "foo"; // returns "foo"
+(null || undefined) ?? "foo"; // returns "foo"
```
### Optional chaining 연산자(`?.`)와의 관계
@@ -103,7 +112,7 @@ true || undefined ?? "foo"; // raises a SyntaxError
```js
let foo = { someFooProp: "hi" };
-console.log(foo.someFooProp?.toUpperCase()); // "HI"
+console.log(foo.someFooProp?.toUpperCase()); // "HI"
console.log(foo.someBarProp?.toUpperCase()); // undefined
```
@@ -112,13 +121,13 @@ console.log(foo.someBarProp?.toUpperCase()); // undefined
이 예제는 기본 값을 제공하지만 `null` or `undefined` 이외의 값을 를 유지한다.
```js
-function getMiscObj(){
+function getMiscObj() {
return {
aNullProperty: null,
emptyText: "", // this is not falsy
- someNumber: 42
+ someNumber: 42,
};
-};
+}
const miscObj = getMiscObj();
diff --git a/files/ko/web/javascript/reference/operators/object_initializer/index.md b/files/ko/web/javascript/reference/operators/object_initializer/index.md
index 8652f88bfb841e..fa0641e7ddadf2 100644
--- a/files/ko/web/javascript/reference/operators/object_initializer/index.md
+++ b/files/ko/web/javascript/reference/operators/object_initializer/index.md
@@ -12,16 +12,18 @@ slug: Web/JavaScript/Reference/Operators/Object_initializer
## 구문
```js
-let o = {}
-let o = {a: 'foo', b: 42, c: {}}
+let o = {};
+let o = { a: "foo", b: 42, c: {} };
-let a = 'foo', b = 42, c = {}
-let o = {a: a, b: b, c: c}
+let a = "foo",
+ b = 42,
+ c = {};
+let o = { a: a, b: b, c: c };
let o = {
property: function (parameters) {},
get property() {},
- set property(value) {}
+ set property(value) {},
};
```
@@ -31,25 +33,27 @@ let o = {
```js
// 프로퍼티명 약식 (ES2015)
-let a = 'foo', b = 42, c = {};
-let o = {a, b, c}
+let a = "foo",
+ b = 42,
+ c = {};
+let o = { a, b, c };
// 메서드명 약식 (ES2015)
let o = {
- property(parameters) {}
-}
+ property(parameters) {},
+};
// 계산된 프로퍼티명 (ES2015)
-let prop = 'foo';
+let prop = "foo";
let o = {
- [prop]: 'hey',
- ['b' + 'ar']: 'there'
-}
+ [prop]: "hey",
+ ["b" + "ar"]: "there",
+};
```
## 설명
-객체 초기자는 {{jsxref("Object")}}의 초기화를 나타내는 표현입니다. 객체는 객체를 나타내는 데 사용되는 _properties_로 구성됩니다. 객체 프로퍼티의 값은 [원시 값](/ko/docs/Glossary/Primitive) 데이터 타입 또는 다른 객체를 포함할 수 있습니다.
+객체 초기자는 {{jsxref("Object")}}의 초기화를 나타내는 표현입니다. 객체는 객체를 나타내는 데 사용되는 _properties_ 로 구성됩니다. 객체 프로퍼티의 값은 [원시 값](/ko/docs/Glossary/Primitive) 데이터 타입 또는 다른 객체를 포함할 수 있습니다.
### 객체 리터럴 표기법 vs JSON
@@ -68,7 +72,7 @@ let o = {
프로퍼티가 없는 빈 객체는 다음과 같이 생성합니다.
```js
-let object = {}
+let object = {};
```
_literal_ 또는 _initializer_ 표기법의 장점은 중괄호 안에 프로퍼티를 갖는 객체를 빠르게 생성할 수 있다는 것입니다. 콤마로 구분하여 `key: value` 상의 목록을 작성하면 됩니다.
@@ -77,10 +81,10 @@ _literal_ 또는 _initializer_ 표기법의 장점은 중괄호 안에 프로퍼
```js
let object = {
- foo: 'bar',
+ foo: "bar",
age: 42,
- baz: {myProp: 12}
-}
+ baz: { myProp: 12 },
+};
```
### 프로퍼티에 접근하기
@@ -88,10 +92,10 @@ let object = {
객체를 생성한 후에는 이를 읽거나 변경할 수 있습니다. 객체 프로퍼티는 점 표기법 또는 대괄호 표기법을 사용해 접근할 수 있습니다(자세한 정보는 [프로퍼티 접근자](/ko/docs/Web/JavaScript/Reference/Operators/Property_Accessors)를 보세요).
```js
-object.foo // "bar"
-object['age'] // 42
-object.baz // {myProp: 12}
-object.baz.myProp //12
+object.foo; // "bar"
+object["age"]; // 42
+object.baz; // {myProp: 12}
+object.baz.myProp; //12
```
### 프로퍼티 정의
@@ -99,29 +103,29 @@ object.baz.myProp //12
우리는 초기자 구문을 사용해 프로퍼티를 작성하는 방법을 이미 배웠습니다. 때때로 코드의 변수를 객체로 넣고 싶은 경우가 있습니다. 다음과 같은 코드를 보게 될 수 있습니다.
```js
-let a = 'foo',
- b = 42,
- c = {};
+let a = "foo",
+ b = 42,
+ c = {};
let o = {
a: a,
b: b,
- c: c
-}
+ c: c,
+};
```
ECMAScript 2015를 사용하면 더 짧은 표기법을 사용해 동일한 결과를 얻을 수 있습니다.
```js
-let a = 'foo',
- b = 42,
- c = {};
+let a = "foo",
+ b = 42,
+ c = {};
// 프로퍼티명 약식 (ES2015)
-let o = {a, b, c}
+let o = { a, b, c };
// 다르게 작성하면,
-console.log((o.a === {a}.a)) // true
+console.log(o.a === { a }.a); // true
```
#### 중복된 프로퍼티명
@@ -129,21 +133,21 @@ console.log((o.a === {a}.a)) // true
동일한 프로퍼티명을 사용하면 두 번째 프로퍼티가 첫 번째 프로퍼티를 덮어씁니다.
```js
-let a = {x: 1, x: 2}
-console.log(a) // {x: 2}
+let a = { x: 1, x: 2 };
+console.log(a); // {x: 2}
```
ECMAScript 5 엄격 모드 코드에서는 중복된 프로퍼티명을 {{jsxref("SyntaxError")}}로 간주합니다. 런타임 시 복제를 가능하게 한 계산된 프로퍼티 명의 도입으로 ECMScript 2015는 이 제한을 제거했습니다.
```js
function haveES2015DuplicatePropertySemantics() {
- 'use strict';
+ "use strict";
try {
- ({prop: 1, prop: 2});
+ ({ prop: 1, prop: 2 });
// 에러가 발생하지 않음, 중복된 프로퍼티명이 엄격 모드에서 허용됨
return true;
- } catch(e) {
+ } catch (e) {
// 에러가 발생함, 엄격 모드에서 중복이 금지됨
return false;
}
@@ -158,8 +162,8 @@ function haveES2015DuplicatePropertySemantics() {
let o = {
property: function (parameters) {},
get property() {},
- set property(value) {}
-}
+ set property(value) {},
+};
```
ECMAScript 2015에서는 약식 표기법을 사용할 수 있으므로 "`function`" 키워드는 필요하지 않습니다.
@@ -168,7 +172,7 @@ ECMAScript 2015에서는 약식 표기법을 사용할 수 있으므로 "`functi
// 약식 메서드명(ES2015)
let o = {
property(parameters) {},
-}
+};
```
ECMAScript 2015에서는 값이 generator 함수인 프로퍼티를 간결하게 정의하는 방법이 있습니다.
@@ -201,31 +205,31 @@ ECMAScript 2015부터 객체 초기자 구문은 계산된 프로퍼티 명도
```js
// 계산된 프로퍼티명(ES2015)
-let i = 0
+let i = 0;
let a = {
- ['foo' + ++i]: i,
- ['foo' + ++i]: i,
- ['foo' + ++i]: i
-}
+ ["foo" + ++i]: i,
+ ["foo" + ++i]: i,
+ ["foo" + ++i]: i,
+};
-console.log(a.foo1) // 1
-console.log(a.foo2) // 2
-console.log(a.foo3) // 3
+console.log(a.foo1); // 1
+console.log(a.foo2); // 2
+console.log(a.foo3); // 3
-const items = ["A","B","C"];
+const items = ["A", "B", "C"];
const obj = {
-[items]: "Hello"
-}
+ [items]: "Hello",
+};
console.log(obj); // A,B,C: "Hello"
-console.log(obj["A,B,C"]) // "Hello"
+console.log(obj["A,B,C"]); // "Hello"
-let param = 'size'
+let param = "size";
let config = {
[param]: 12,
- ['mobile' + param.charAt(0).toUpperCase() + param.slice(1)]: 4
-}
+ ["mobile" + param.charAt(0).toUpperCase() + param.slice(1)]: 4,
+};
-console.log(config) // {size: 12, mobileSize: 4}
+console.log(config); // {size: 12, mobileSize: 4}
```
### 전개 프로퍼티
@@ -235,13 +239,13 @@ console.log(config) // {size: 12, mobileSize: 4}
이제 {{jsxref("Object.assign()")}} 보다 더 짧은 구문을 사용해 얕은 복제(`prototype` 제외) 또는 객체 병합이 가능합니다.
```js
-let obj1 = { foo: 'bar', x: 42 }
-let obj2 = { foo: 'baz', y: 13 }
+let obj1 = { foo: "bar", x: 42 };
+let obj2 = { foo: "baz", y: 13 };
-let clonedObj = { ...obj1 }
+let clonedObj = { ...obj1 };
// Object { foo: "bar", x: 42 }
-let mergedObj = { ...obj1, ...obj2 }
+let mergedObj = { ...obj1, ...obj2 };
// Object { foo: "baz", x: 42, y: 13 }
```
@@ -252,19 +256,19 @@ let mergedObj = { ...obj1, ...obj2 }
`__proto__: value` 또는 `"__proto__": value` 형태의 프로토타입 정의는 `__proto__` 이름을 갖는 프로퍼티를 생성하지 않습니다. 대신에, 제공된 값이 객체 또는 [`null`](/ko/docs/Web/JavaScript/Reference/Global_Objects/null)인 경우, 생성된 객체의 `[[Prototype]]`을 해당 값으로 변경합니다(값이 객체 또는 `null`이 아닌 경우, 객체는 변경되지 않습니다).
```js
-let obj1 = {}
-assert(Object.getPrototypeOf(obj1) === Object.prototype)
+let obj1 = {};
+assert(Object.getPrototypeOf(obj1) === Object.prototype);
-let obj2 = {__proto__: null}
-assert(Object.getPrototypeOf(obj2) === null)
+let obj2 = { __proto__: null };
+assert(Object.getPrototypeOf(obj2) === null);
-let protoObj = {}
-let obj3 = {'__proto__': protoObj}
-assert(Object.getPrototypeOf(obj3) === protoObj)
+let protoObj = {};
+let obj3 = { __proto__: protoObj };
+assert(Object.getPrototypeOf(obj3) === protoObj);
-let obj4 = {__proto__: 'not an object or null'}
-assert(Object.getPrototypeOf(obj4) === Object.prototype)
-assert(!obj4.hasOwnProperty('__proto__'))
+let obj4 = { __proto__: "not an object or null" };
+assert(Object.getPrototypeOf(obj4) === Object.prototype);
+assert(!obj4.hasOwnProperty("__proto__"));
```
객체 리터럴에서는 단일 프로토타입 변형만 허용됩니다. 다중 프로토타입 변형은 구문 에러입니다.
@@ -272,18 +276,22 @@ assert(!obj4.hasOwnProperty('__proto__'))
"콜론" 표기법을 사용하지 않는 프로퍼티 정의는 프로토타입 변형이 아닙니다. 이는 다른 이름을 사용하여 유사한 정의와 동일하게 동작하는 프로퍼티 정의입니다.
```js
-let __proto__ = 'variable'
+let __proto__ = "variable";
-let obj1 = {__proto__}
-assert(Object.getPrototypeOf(obj1) === Object.prototype)
-assert(obj1.hasOwnProperty('__proto__'))
-assert(obj1.__proto__ === 'variable')
+let obj1 = { __proto__ };
+assert(Object.getPrototypeOf(obj1) === Object.prototype);
+assert(obj1.hasOwnProperty("__proto__"));
+assert(obj1.__proto__ === "variable");
-let obj2 = {__proto__() { return 'hello'; }}
-assert(obj2.__proto__() === 'hello')
+let obj2 = {
+ __proto__() {
+ return "hello";
+ },
+};
+assert(obj2.__proto__() === "hello");
-let obj3 = {['__prot' + 'o__']: 17}
-assert(obj3.__proto__ === 17)
+let obj3 = { ["__prot" + "o__"]: 17 };
+assert(obj3.__proto__ === 17);
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/operator_precedence/index.md b/files/ko/web/javascript/reference/operators/operator_precedence/index.md
index bc4407245222ec..c999a3b1e721c7 100644
--- a/files/ko/web/javascript/reference/operators/operator_precedence/index.md
+++ b/files/ko/web/javascript/reference/operators/operator_precedence/index.md
@@ -20,8 +20,8 @@ a 연산자1 b 연산자2 c
두 연산자의 우선순위(아래 표 참조)가 다를 경우, 우선순위가 높은 연산자가 먼저 실행되고 결합성은 영향을 미치지 않습니다. 아래 예제에서는 덧셈이 곱셈보다 먼저 쓰였음에도 곱셈의 우선순위가 높기 때문에 먼저 실행됩니다.
```js
-console.log(3 + 10 * 2); // 23을 출력
-console.log(3 + (10 * 2)); // 23을 출력, 괄호는 불필요함
+console.log(3 + 10 * 2); // 23을 출력
+console.log(3 + 10 * 2); // 23을 출력, 괄호는 불필요함
console.log((3 + 10) * 2); // 26을 출력, 괄호로 인해 실행 순서가 바뀜
```
@@ -166,10 +166,10 @@ console.log((echo("첫째", 2) ** echo("둘째", 3)) ** echo("셋째", 2)); 2 && 2 > 1
+3 > 2 && 2 > 1;
// true를 반환
-3 > 2 > 1
+3 > 2 > 1;
// 3 > 2는 true인데, 부등호 연산자에서 true는 1로 변환되므로
// true > 1은 1 > 1이 되고, 이는 거짓이다.
// 괄호를 추가하면 (3 > 2) > 1과 같다.
@@ -182,10 +182,10 @@ console.log((echo("첫째", 2) ** echo("둘째", 3)) ** echo("셋째", 2)); ( { ...objects } );
+var obj1 = { foo: "bar", x: 42 };
+var obj2 = { foo: "baz", y: 13 };
+const merge = (...objects) => ({ ...objects });
- var mergedObj = merge ( obj1, obj2);
- // Object { 0: { foo: 'bar', x: 42 }, 1: { foo: 'baz', y: 13 } }
+var mergedObj = merge(obj1, obj2);
+// Object { 0: { foo: 'bar', x: 42 }, 1: { foo: 'baz', y: 13 } }
- var mergedObj = merge ( {}, obj1, obj2);
- // Object { 0: {}, 1: { foo: 'bar', x: 42 }, 2: { foo: 'baz', y: 13 } }
+var mergedObj = merge({}, obj1, obj2);
+// Object { 0: {}, 1: { foo: 'bar', x: 42 }, 2: { foo: 'baz', y: 13 } }
```
위 예제에서, 전개 구문은 예상대로 동작하지 않습니다. 나머지 매개변수로 인해, 인수 배열을 객체 리터럴로 전개합니다.
@@ -209,7 +209,7 @@ var mergedObj = { ...obj1, ...obj2 };
전개 구문 (spread 프로퍼티인 경우 제외) 은 [iterable](/ko/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) 객체에만 적용됩니다.
```js
-var obj = {'key1': 'value1'};
+var obj = { key1: "value1" };
var array = [...obj]; // TypeError: obj is not iterable
```
diff --git a/files/ko/web/javascript/reference/operators/subtraction/index.md b/files/ko/web/javascript/reference/operators/subtraction/index.md
index acdf554fd0cf0b..d2983971bc1b53 100644
--- a/files/ko/web/javascript/reference/operators/subtraction/index.md
+++ b/files/ko/web/javascript/reference/operators/subtraction/index.md
@@ -12,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Subtraction
## 구문
```js
-x - y
+x - y;
```
## 예제
@@ -20,14 +20,14 @@ x - y
### 뺄셈
```js
-5 - 3 // 2
-3 - 5 // -2
+5 - 3; // 2
+3 - 5; // -2
```
### 숫자가 아닌 경우
```js
-'foo' - 3 // NaN
+"foo" - 3; // NaN
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/subtraction_assignment/index.md b/files/ko/web/javascript/reference/operators/subtraction_assignment/index.md
index f508c438f41bf9..e03b0afd0a4d1a 100644
--- a/files/ko/web/javascript/reference/operators/subtraction_assignment/index.md
+++ b/files/ko/web/javascript/reference/operators/subtraction_assignment/index.md
@@ -12,7 +12,7 @@ slug: Web/JavaScript/Reference/Operators/Subtraction_assignment
## 구문
```js
-x -= y // x = x - y
+x -= y; // x = x - y
```
## 예제
@@ -23,8 +23,8 @@ x -= y // x = x - y
// bar = 5
// 위와 같은 변수를 가정할 때
-bar -= 2 // 3
-bar -= 'foo' // NaN
+bar -= 2; // 3
+bar -= "foo"; // NaN
```
## 명세
diff --git a/files/ko/web/javascript/reference/operators/super/index.md b/files/ko/web/javascript/reference/operators/super/index.md
index 67017ba27e8030..1976362d5af53a 100644
--- a/files/ko/web/javascript/reference/operators/super/index.md
+++ b/files/ko/web/javascript/reference/operators/super/index.md
@@ -47,7 +47,7 @@ super[expression]
### 클래스에서 super 사용하기
-이 코드 스니펫은 [클래스 샘플](https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html) ([라이브 데모]((https://googlechrome.github.io/samples/classes-es6/index.html)))에서 가져왔습니다. 여기서 `super()`는 `Rectangle`과 `Square` 사이에 공통적인 생성자 부분의 중복을 피하기 위해 호출됩니다.
+이 코드 스니펫은 [클래스 샘플](https://github.com/GoogleChrome/samples/blob/gh-pages/classes-es6/index.html) ([라이브 데모](<(https://googlechrome.github.io/samples/classes-es6/index.html)>))에서 가져왔습니다. 여기서 `super()`는 `Rectangle`과 `Square` 사이에 공통적인 생성자 부분의 중복을 피하기 위해 호출됩니다.
```js
class Rectangle {
@@ -247,7 +247,7 @@ const e = new Extended();
// 인스턴스 상속 재설정
Object.setPrototypeOf(Extended.prototype, AnotherBase.prototype);
console.log(e.getX()); // 프로토타입 체인이 변경되었기 때문에 "1" 대신 "2"가 로그됩니다.
-console.log(Extended.staticGetX()); // 정적 부분을 아직 수정하지 않았기 때문에, 여전히 "3"이 로그됩니다.
+console.log(Extended.staticGetX()); // 정적 부분을 아직 수정하지 않았기 때문에, 여전히 "3"이 로그됩니다.
// 정적 상속 재설정
Object.setPrototypeOf(Extended, AnotherBase);
console.log(Extended.staticGetX()); // 이제 "4"가 로그됩니다.
diff --git a/files/ko/web/javascript/reference/operators/this/index.md b/files/ko/web/javascript/reference/operators/this/index.md
index 5aba5bd4291945..3df9cbbf79fa28 100644
--- a/files/ko/web/javascript/reference/operators/this/index.md
+++ b/files/ko/web/javascript/reference/operators/this/index.md
@@ -14,7 +14,7 @@ JavaScript에서 **함수의 `this` 키워드**는 다른 언어와 조금 다
## 구문
```js
- this
+this;
```
### 값
@@ -33,8 +33,8 @@ a = 37;
console.log(window.a); // 37
this.b = "MDN";
-console.log(window.b) // "MDN"
-console.log(b) // "MDN"
+console.log(window.b); // "MDN"
+console.log(b); // "MDN"
```
> **노트:** global {{jsxref("globalThis")}} 프로퍼티를 사용하여 코드가 실행중인 현재 컨텍스트와 관계없이 항상 전역 객체를 얻을 수 있습니다.
@@ -62,7 +62,7 @@ f1() === global; // true
반면에 엄격 모드에서 `this` 값은 실행 문맥에 진입하며 설정되는 값을 유지하므로 다음 예시에서 보여지는 것 처럼 `this`는 `undefined`로 남아있습니다.
```js
-function f2(){
+function f2() {
"use strict"; // 엄격 모드 참고
return this;
}
@@ -78,17 +78,17 @@ f2() === undefined; // true
```js
// call 또는 apply의 첫 번째 인자로 객체가 전달될 수 있으며 this가 그 객체에 묶임
-var obj = {a: 'Custom'};
+var obj = { a: "Custom" };
// 변수를 선언하고 변수에 프로퍼티로 전역 window를 할당
-var a = 'Global';
+var a = "Global";
function whatsThis() {
- return this.a; // 함수 호출 방식에 따라 값이 달라짐
+ return this.a; // 함수 호출 방식에 따라 값이 달라짐
}
-whatsThis(); // this는 'Global'. 함수 내에서 설정되지 않았으므로 global/window 객체로 초기값을 설정한다.
-whatsThis.call(obj); // this는 'Custom'. 함수 내에서 obj로 설정한다.
+whatsThis(); // this는 'Global'. 함수 내에서 설정되지 않았으므로 global/window 객체로 초기값을 설정한다.
+whatsThis.call(obj); // this는 'Custom'. 함수 내에서 obj로 설정한다.
whatsThis.apply(obj); // this는 'Custom'. 함수 내에서 obj로 설정한다.
```
@@ -99,7 +99,7 @@ function add(c, d) {
return this.a + this.b + c + d;
}
-var o = {a: 1, b: 3};
+var o = { a: 1, b: 3 };
// 첫 번째 인자는 'this'로 사용할 객체이고,
// 이어지는 인자들은 함수 호출에서 인수로 전달된다.
@@ -117,8 +117,8 @@ function bar() {
console.log(Object.prototype.toString.call(this));
}
-bar.call(7); // [object Number]
-bar.call('foo'); // [object String]
+bar.call(7); // [object Number]
+bar.call("foo"); // [object String]
bar.call(undefined); // [object global]
```
@@ -131,13 +131,13 @@ function f() {
return this.a;
}
-var g = f.bind({a: 'azerty'});
+var g = f.bind({ a: "azerty" });
console.log(g()); // azerty
-var h = g.bind({a: 'yoo'}); // bind는 한 번만 동작함!
+var h = g.bind({ a: "yoo" }); // bind는 한 번만 동작함!
console.log(h()); // azerty
-var o = {a: 37, f: f, g: g, h: h};
+var o = { a: 37, f: f, g: g, h: h };
console.log(o.a, o.f(), o.g(), o.h()); // 37, 37, azerty, azerty
```
@@ -147,7 +147,7 @@ console.log(o.a, o.f(), o.g(), o.h()); // 37, 37, azerty, azerty
```js
var globalObject = this;
-var foo = (() => this);
+var foo = () => this;
console.log(foo() === globalObject); // true
```
@@ -155,7 +155,7 @@ console.log(foo() === globalObject); // true
```js
// 객체로서 메서드 호출
-var obj = {func: foo};
+var obj = { func: foo };
console.log(obj.func() === globalObject); // true
// call을 사용한 this 설정 시도
@@ -174,10 +174,10 @@ console.log(foo() === globalObject); // true
// this는 감싸진 함수의 this로 영구적으로 묶입니다.
// bar의 값은 호출에서 설정될 수 있으며, 이는 반환된 함수의 값을 설정하는 것입니다.
var obj = {
- bar: function() {
- var x = (() => this);
+ bar: function () {
+ var x = () => this;
return x;
- }
+ },
};
// obj의 메소드로써 bar를 호출하고, this를 obj로 설정
@@ -206,9 +206,9 @@ console.log(fn2()() == window); // true
```js
var o = {
prop: 37,
- f: function() {
+ f: function () {
return this.prop;
- }
+ },
};
console.log(o.f()); // 37
@@ -217,7 +217,7 @@ console.log(o.f()); // 37
이 행동이 함수가 정의된 방법이나 위치에 전혀 영향을 받지 않는 것에 유의해라. 이전 예제에서, `o` 의 정의 중 `f` 함수를 구성원으로 내부에 정의 하였다. 그러나, 간단하게 함수를 먼저 정의하고 나중에 `o.f`를 추가할 수 있다. 이렇게 하면 동일한 동작 결과 이다 :
```js
-var o = {prop: 37};
+var o = { prop: 37 };
function independent() {
return this.prop;
@@ -233,7 +233,7 @@ console.log(o.f()); // logs 37
마찬가지로, 이 `this` 바인딩은 가장 즉각으로 멤버 대상에 영향을 받는다. 다음 예제에서, 함수를 실행할 때, 객체 `o.b`의 메소드 `g` 로서 호출한다. 이것이 실행되는 동안, 함수 내부의 `this`는 `o.b`를 나타낸다. 객체는 그 자신이 `o`의 멤버 중 하나라는 사실은 중요하지 않다. 가장 즉각적인 참조가 중요한 것이다.
```js
-o.b = {g: independent, prop: 42};
+o.b = { g: independent, prop: 42 };
console.log(o.b.g()); // logs 42
```
@@ -243,7 +243,9 @@ console.log(o.b.g()); // logs 42
```js
var o = {
- f:function() { return this.a + this.b; }
+ f: function () {
+ return this.a + this.b;
+ },
};
var p = Object.create(o);
p.a = 1;
@@ -269,11 +271,14 @@ var o = {
c: 3,
get average() {
return (this.a + this.b + this.c) / 3;
- }
+ },
};
-Object.defineProperty(o, 'sum', {
- get: sum, enumerable: true, configurable: true});
+Object.defineProperty(o, "sum", {
+ get: sum,
+ enumerable: true,
+ configurable: true,
+});
console.log(o.average, o.sum); // 2, 6
```
@@ -311,10 +316,9 @@ function C() {
var o = new C();
console.log(o.a); // 37
-
function C2() {
this.a = 37;
- return {a: 38};
+ return { a: 38 };
}
o = new C2();
@@ -332,16 +336,16 @@ function bluify(e) {
console.log(this === e.currentTarget);
// currentTarget과 target이 같은 객체면 true
console.log(this === e.target);
- this.style.backgroundColor = '#A5D9F3';
+ this.style.backgroundColor = "#A5D9F3";
}
// 문서 내 모든 요소의 목록
-var elements = document.getElementsByTagName('*');
+var elements = document.getElementsByTagName("*");
// 어떤 요소를 클릭하면 파랗게 변하도록
// bluify를 클릭 처리기로 등록
for (var i = 0; i < elements.length; i++) {
- elements[i].addEventListener('click', bluify, false);
+ elements[i].addEventListener("click", bluify, false);
}
```
@@ -350,9 +354,7 @@ for (var i = 0; i < elements.length; i++) {
코드를 인라인 이벤트 처리기로 사용하면 `this`는 처리기를 배치한 DOM 요소로 설정됩니다.
```js
-