diff --git a/README-kr.md b/README-kr.md index e4ed55a..13b9f3f 100644 --- a/README-kr.md +++ b/README-kr.md @@ -1,15 +1,15 @@ -# 아니 X 발? 자바스크립트 이게 뭐야?? +# 아니 X발? 자바스크립트 이게 뭐야?? [![WTFPL 2.0][license-image]][license-url] [![NPM version][npm-image]][npm-url] > 재미있고 교묘한 JavaScript 예제 -JavaScript 는 훌륭한 언어입니다. JavaScript 는 구문이 단순하며 큰 생태계를 가지고 있습니다. 가장 중요한 점은 훌륭한 공동체를 가지고 있다는 것입니다. +JavaScript는 훌륭한 언어입니다. JavaScript는 구문이 단순하며 큰 생태계를 가지고 있습니다. 가장 중요한 점은 훌륭한 공동체를 가지고 있다는 것입니다. -동시에, 우리 모두는 자바스크립트가 까다로운 부분을 가진 꽤 재미있는 언어라는 것을 알고 있습니다. 몇몇 특징은 우리의 일상적인 일을 순식간에 지옥으로 바꾸기도 하고, 우리를 크게 웃게 만들기도 합니다. +동시에, 우리 모두는 JavaScript가 까다로운 부분을 가진 꽤 재미있는 언어라는 것을 알고 있습니다. 몇몇 특징은 우리의 일상적인 일을 순식간에 지옥으로 바꾸기도 하고, 우리를 크게 웃게 만들기도 합니다. -WTFJS 의 아이디어는 [Brian Leroux](https://twitter.com/brianleroux)에 속해있습니다. 이 목록들은 그의 이야기에서 꽤 영감을 받았습니다. [**“WTFJS”** at dotJS 2012](https://www.youtube.com/watch?v=et8xNAc2ic8): +WTFJS의 아이디어는 [Brian Leroux](https://twitter.com/brianleroux)에 속해있습니다. 이 목록들은 그의 이야기에서 꽤 영감을 받았습니다. [**“WTFJS”** at dotJS 2012](https://www.youtube.com/watch?v=et8xNAc2ic8): [![dotJS 2012 - Brian Leroux - WTFJS](https://img.youtube.com/vi/et8xNAc2ic8/0.jpg)](https://www.youtube.com/watch?v=et8xNAc2ic8) @@ -27,7 +27,7 @@ $ npm install -g wtfjs # 번역 -현재, **wtfjs**는 아래와 같은 언어로 번역되었습니다.: +현재, **wtfjs**는 아래와 같은 언어로 번역되었습니다: - [中文版](./README-zh-cn.md) - [हिंदी](./README-hi.md) @@ -51,14 +51,14 @@ $ npm install -g wtfjs - [✍🏻 표기법](#-%ED%91%9C%EA%B8%B0%EB%B2%95) - [👀 예제](#-%EC%98%88%EC%A0%9C) - [`[]`와 `![]은 같다`](#%EC%99%80-%EC%9D%80-%EA%B0%99%EB%8B%A4) - - [`true`는 `![]`와 같지 않지만, `[]` 이와도 같지 않다](#true%EB%8A%94-%EC%99%80-%EA%B0%99%EC%A7%80-%EC%95%8A%EC%A7%80%EB%A7%8C--%EC%9D%B4%EC%99%80%EB%8F%84-%EA%B0%99%EC%A7%80-%EC%95%8A%EB%8B%A4) - - [true 은 false](#true-%EC%9D%80-false) + - [`true`는 `![]`와 같지 않지만, `[]`와도 같지 않다](#true%EB%8A%94-%EC%99%80-%EA%B0%99%EC%A7%80-%EC%95%8A%EC%A7%80%EB%A7%8C-%EC%99%80%EB%8F%84-%EA%B0%99%EC%A7%80-%EC%95%8A%EB%8B%A4) + - [true는 false](#true%EB%8A%94-false) - [baNaNa](#banana) - [`NaN`은 `NaN`이 아니다](#nan%EC%9D%80-nan%EC%9D%B4-%EC%95%84%EB%8B%88%EB%8B%A4) - [이것은 실패다](#%EC%9D%B4%EA%B2%83%EC%9D%80-%EC%8B%A4%ED%8C%A8%EB%8B%A4) - [`[]`은 truthy 이지만 `true`는 아니다](#%EC%9D%80-truthy-%EC%9D%B4%EC%A7%80%EB%A7%8C-true%EB%8A%94-%EC%95%84%EB%8B%88%EB%8B%A4) - [`null`은 falsy 이지만 `false`은 아니다](#null%EC%9D%80-falsy-%EC%9D%B4%EC%A7%80%EB%A7%8C-false%EC%9D%80-%EC%95%84%EB%8B%88%EB%8B%A4) - - [`document.all`은 객체이지만 `undefined` 이다](#documentall%EC%9D%80-%EA%B0%9D%EC%B2%B4%EC%9D%B4%EC%A7%80%EB%A7%8C-undefined-%EC%9D%B4%EB%8B%A4) + - [`document.all`은 객체이지만 `undefined`이다](#documentall%EC%9D%80-%EA%B0%9D%EC%B2%B4%EC%9D%B4%EC%A7%80%EB%A7%8C-undefined%EC%9D%B4%EB%8B%A4) - [최소 값은 0 보다 크다](#%EC%B5%9C%EC%86%8C-%EA%B0%92%EC%9D%80-0-%EB%B3%B4%EB%8B%A4-%ED%81%AC%EB%8B%A4) - [함수는 함수가 아니다](#%ED%95%A8%EC%88%98%EB%8A%94-%ED%95%A8%EC%88%98%EA%B0%80-%EC%95%84%EB%8B%88%EB%8B%A4) - [배열 추가](#%EB%B0%B0%EC%97%B4-%EC%B6%94%EA%B0%80) @@ -67,7 +67,7 @@ $ npm install -g wtfjs - [`undefined`과 `Number`](#undefined%EA%B3%BC-number) - [`parseInt`은 나쁜 놈이다](#parseint%EC%9D%80-%EB%82%98%EC%81%9C-%EB%86%88%EC%9D%B4%EB%8B%A4) - [`true`와 `false`를 이용한 수학](#true%EC%99%80-false%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%88%98%ED%95%99) - - [HTML 주석은 JavaScript 에서도 유효하다](#html-%EC%A3%BC%EC%84%9D%EC%9D%80-javascript-%EC%97%90%EC%84%9C%EB%8F%84-%EC%9C%A0%ED%9A%A8%ED%95%98%EB%8B%A4) + - [HTML 주석은 JavaScript에서도 유효하다](#html-%EC%A3%BC%EC%84%9D%EC%9D%80-javascript%EC%97%90%EC%84%9C%EB%8F%84-%EC%9C%A0%ED%9A%A8%ED%95%98%EB%8B%A4) - [`NaN`은 숫자가 아니다](#nan%EC%9D%80-%EC%88%AB%EC%9E%90%EA%B0%80-%EC%95%84%EB%8B%88%EB%8B%A4) - [`[]`과 `null`은 객체이다](#%EA%B3%BC-null%EC%9D%80-%EA%B0%9D%EC%B2%B4%EC%9D%B4%EB%8B%A4) - [마법처럼 증가하는 숫자](#%EB%A7%88%EB%B2%95%EC%B2%98%EB%9F%BC-%EC%A6%9D%EA%B0%80%ED%95%98%EB%8A%94-%EC%88%AB%EC%9E%90) @@ -77,14 +77,14 @@ $ npm install -g wtfjs - [재미있는 수학](#%EC%9E%AC%EB%AF%B8%EC%9E%88%EB%8A%94-%EC%88%98%ED%95%99) - [RegExps 추가](#regexps-%EC%B6%94%EA%B0%80) - [문자열은 `String`의 인스턴스가 아니다](#%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%80-string%EC%9D%98-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EA%B0%80-%EC%95%84%EB%8B%88%EB%8B%A4) - - [backticks 으로 함수 호출](#backticks-%EC%9C%BC%EB%A1%9C-%ED%95%A8%EC%88%98-%ED%98%B8%EC%B6%9C) + - [backticks으로 함수 호출](#backticks%EC%9C%BC%EB%A1%9C-%ED%95%A8%EC%88%98-%ED%98%B8%EC%B6%9C) - [Call call call](#call-call-call) - [`constructor` 속성](#constructor-%EC%86%8D%EC%84%B1) - [객체 속성의 키로서의 객체](#%EA%B0%9D%EC%B2%B4-%EC%86%8D%EC%84%B1%EC%9D%98-%ED%82%A4%EB%A1%9C%EC%84%9C%EC%9D%98-%EA%B0%9D%EC%B2%B4) - [`__proto__`을 사용한 프로토 타입 접근](#__proto__%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%94%84%EB%A1%9C%ED%86%A0-%ED%83%80%EC%9E%85-%EC%A0%91%EA%B7%BC) - [`` `${{Object}}` ``](#-object-) - [디폴트 값으로 구조 해제](#%EB%94%94%ED%8F%B4%ED%8A%B8-%EA%B0%92%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EC%A1%B0-%ED%95%B4%EC%A0%9C) - - [Dots 과 spreading](#dots-%EA%B3%BC-spreading) + - [Dots와 spreading](#dots%EC%99%80-spreading) - [라벨](#%EB%9D%BC%EB%B2%A8) - [중첩된 라벨들](#%EC%A4%91%EC%B2%A9%EB%90%9C-%EB%9D%BC%EB%B2%A8%EB%93%A4) - [교활한 `try..catch`](#%EA%B5%90%ED%99%9C%ED%95%9C-trycatch) @@ -104,7 +104,7 @@ $ npm install -g wtfjs - [`null`과 `0` 비교](#null%EA%B3%BC-0-%EB%B9%84%EA%B5%90) - [동일한 변수 재선언](#%EB%8F%99%EC%9D%BC%ED%95%9C-%EB%B3%80%EC%88%98-%EC%9E%AC%EC%84%A0%EC%96%B8) - [디폴트 동작 Array.prototype.sort()](#%EB%94%94%ED%8F%B4%ED%8A%B8-%EB%8F%99%EC%9E%91-arrayprototypesort) - - [resolve()은 Promise instance 를 반환하지 않는다](#resolve%EC%9D%80-promise-instance-%EB%A5%BC-%EB%B0%98%ED%99%98%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4) + - [resolve()은 Promise instance를 반환하지 않는다](#resolve%EC%9D%80-promise-instance%EB%A5%BC-%EB%B0%98%ED%99%98%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4) - [📚 기타 resources](#-%EA%B8%B0%ED%83%80-resources) - [🎓 License](#-license) @@ -115,13 +115,13 @@ $ npm install -g wtfjs > — _[**“Just for Fun: 우연한 혁명가의 이야기”**](https://en.wikipedia.org/wiki/Just_for_Fun), Linus Torvalds_ -이 목록의 주요 목표는 가능한 JavaScript 의 몇 가지의 엄청난 예들을 모으고, 작동 방식을 설명하는 것 입니다. 이전에 우리가 몰랐던 것들을 배우는 것이 재미 있기 때문입니다. +이 목록의 주요 목표는 가능한 JavaScript의 몇 가지의 엄청난 예제들을 모으고, 작동 방식을 설명하는 것 입니다. 이전에 우리가 몰랐던 것들을 배우는 것이 재미있기 때문입니다. -당신이 초보자라면, 이 노트를 사용하여 JavaScript 에 대해 자세히 알아 볼 수 있을 것입니다. 이 노트의 설명을 읽는 것에 더 많은 시간을 할애할수 있기를 바랍니다. +당신이 초보자라면, 이 노트를 사용하여 JavaScript에 대해 자세히 알아볼 수 있을 것입니다. 이 노트의 설명을 읽는 것에 더 많은 시간을 할애할 수 있기를 바랍니다. -당신이 전문 개발자라면, 우리가 사랑하는 JavaScript 의 모든 기이한 점과 예상치 못한 것들에 대한 예시에 훌륭한 참조로 간주 할 수 있습니다. +당신이 전문 개발자라면, 우리가 사랑하는 JavaScript의 모든 기이한 점과 예상치 못한 것들에 대한 예시에 훌륭한 참조로 간주할 수 있습니다. -어쨌든, 이것을 읽읍시다. 당신은 아마 새로운 것들을 찾을 수 있을 것 입니다. +어쨌든, 이것을 읽읍시다. 당신은 아마 새로운 것들을 찾을 수 있을 것입니다. # ✍🏻 표기법 @@ -137,7 +137,7 @@ $ npm install -g wtfjs console.log("hello, world!"); // > hello, world! ``` -**`//`** 설명에 사용되는 주석입니다. 예: +**`//`** 설명에 사용되는 주석입니다. 예를 들면: ```js // Assigning a function to foo constant @@ -148,7 +148,7 @@ const foo = function() {}; ## `[]`와 `![]은 같다` -배열은 배열이 아닙니다.: +배열은 배열이 아닙니다: ```js [] == ![]; // -> true @@ -156,9 +156,9 @@ const foo = function() {}; ### 💡 설명: -추상 항등 연산자는 양쪽을 숫자로 변환하여 비교하고, 서로 다른 이유로 양 쪽의 숫자는 `0`이 됩니다. 배열은 truthy 하므로, 오른쪽의 값은 `0`을 강요하는 truthy value 의 반대 값 즉, `false`입니다. 그러나 왼쪽은 빈 배열은 먼저 boolean 되지 않고 숫자로 강제 변환되고 빈 배열은 truthy 임에도 불구하고`0`으로 강요됩니다. +추상 항등 연산자는 양쪽을 숫자로 변환하여 비교하고, 서로 다른 이유로 양 쪽의 숫자는 `0`이 됩니다. 배열은 truthy 하므로, 오른쪽의 값은 `0`을 강요하는 truthy value의 반대 값 즉, `false`입니다. 그러나 왼쪽은 빈 배열은 먼저 boolean이 되지 않고 숫자로 강제 변환되고 빈 배열은 truthy 임에도 불구하고 `0`으로 강요됩니다. -이 표현식이 어떻게 단순화 되는지는 아래와 같습니다.: +이 표현식이 어떻게 단순화 되는지는 아래와 같습니다: ```js +[] == +![]; @@ -170,9 +170,9 @@ true; 참조 [`[]`은 truthy 이지만 `true`은 아니다](#-is-truthy-but-not-true). - [**12.5.9** 논리 연산자 NOT (`!`)](https://www.ecma-international.org/ecma-262/#sec-logical-not-operator) -- [**7.2.13** 추상 평등 ](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison) +- [**7.2.13** 추상 평등](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison) -## `true`는 `![]`와 같지 않지만, `[]` 이와도 같지 않다 +## `true`는 `![]`와 같지 않지만, `[]`와도 같지 않다 배열은 `true`와 같지 않지만 배열이 아닌것도 `true`와 같지 않습니다; 배열은 `false`와 같지만 배열이 아닌것도 `false`와 같습니다: @@ -229,7 +229,7 @@ false == false; // -> true - [**7.2.13** 추상 평등 비교](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison) -## true 은 false +## true는 false ```js !!"false" == !!"true"; // -> true @@ -258,7 +258,7 @@ false == "false"; // -> false "b" + "a" + +"a" + "a"; // -> 'baNaNa' ``` -이것은 JavaScript 에서 구식 농담이지만 재해석 되었습니다. 원본은 다음과 같습니다: +이것은 JavaScript에서 구식 농담이지만 재해석 되었습니다. 원본은 다음과 같습니다: ```js "foo" + +"bar"; // -> 'fooNaN' @@ -266,7 +266,7 @@ false == "false"; // -> false ### 💡 설명: -식은 `'foo' + (+'bar')`으로 평가되고 숫자가 아닌 `'bar'`형태로 변환됩니다. +식은 `'foo' + (+'bar')`으로 평가되고 숫자가 아닌 `'bar'` 형태로 변환됩니다. - [**12.8.3** 덧셈 연산자 (`+`)](https://www.ecma-international.org/ecma-262/#sec-addition-operator-plus) - [12.5.6 단항 + 연산자](https://www.ecma-international.org/ecma-262/#sec-unary-plus-operator) @@ -289,11 +289,11 @@ NaN === NaN; // -> false > > — [**7.2.14** 염격한 평등 비교](https://www.ecma-international.org/ecma-262/#sec-strict-equality-comparison) -IEEE 에서 정의한 `NaN`: +IEEE에서 정의한 `NaN`: -> 4 개의 상호 배타적인 관계 : 보다 작음, 같음, 보다 큼, 순서 없음. 마지막의 경우 하나 이상의 피연산자가 NaN 일 때 발생합니다. 모든 NaN 는 자신을 포함한 모든 것과 순서 없이 비교해야합니다. +> 4 개의 상호 배타적인 관계 : 보다 작음, 같음, 보다 큼, 순서 없음. 마지막의 경우 하나 이상의 피연산자가 NaN일 때 발생합니다. 모든 NaN은 자신을 포함한 모든 것과 순서 없이 비교해야 합니다. > -> — [“IEEE754 NaN 값에 false 를 반환하는 것의 근거는 무엇입니까?”](https://stackoverflow.com/questions/1565164/1573715#1573715) StackOverflow 에서 +> — [“IEEE754 NaN 값에 false를 반환하는 것의 근거는 무엇입니까?”](https://stackoverflow.com/questions/1565164/1573715#1573715) StackOverflow에서 ## 이것은 실패다 @@ -322,7 +322,7 @@ IEEE 에서 정의한 `NaN`: ![] + [].toString(); // 'false' ``` -문자열을 배열로 생각하면 `[0]`을 통해 첫 번째 문자에 접근 할 수 있습니다: +문자열을 배열로 생각하면 `[0]`을 통해 첫 번째 문자에 접근할 수 있습니다: ```js "false"[0]; // -> 'f' @@ -368,7 +368,7 @@ null == false; // -> false - [**7.2.13** 추상 평등 비교](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison) -## `document.all`은 객체이지만 `undefined` 이다 +## `document.all`은 객체이지만 `undefined`이다 > ⚠️ 이 파트는 브라우저 API 의 일부이며 Node.js 환경에서는 작동하지 않습니다.⚠️ @@ -394,15 +394,15 @@ document.all == null; // -> true ### 💡 설명: -> 특히 이전 버전의 IE 에서 `document.all`은 DOM 요소에 접근하는 방법을 사용했습니다. 이것은 표준이 된적은 없지만 이전 JS 코드에서 사용되었습니다. 새로운 APIs (`document.getElementById`와 같은)에서 표준이 진행되었을 때 이 API 호출은 쓸모 없게 되었고 표준 위원회는 이를 어떻게 처리할지 결정해야했습니다. 광범위하게 사용되기 때문에 그들은 API 를 유지하기로 결정했지만 JavaScript 명세된 것을 고의로 위반했습니다. +> 특히 이전 버전의 IE에서 `document.all`은 DOM 요소에 접근하는 방법을 사용했습니다. 이것은 표준이 된 적은 없지만 이전 JavaScript 코드에서 사용되었습니다. 새로운 APIs(`document.getElementById`와 같은)에서 표준이 진행되었을 때 이 API 호출은 쓸모 없게 되었고 표준 위원회는 이를 어떻게 처리할지 결정해야 했습니다. 광범위하게 사용되기 때문에 그들은 API를 유지하기로 결정했지만 JavaScript 명세된 것을 고의로 위반했습니다. > 이것이 `undefined`의 상황에서 [엄격한 평등 비교](https://www.ecma-international.org/ecma-262/#sec-strict-equality-comparison)을 사용했을 때 `false`를 응답하고 [추상 평등 비교](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)을 사용할 때 `true`로 응답하는 이유는 명시적으로 허용하는 명세된 것의 의도적인 위반 때문입니다. > -> — [“오래된 특징 - document.all”](https://html.spec.whatwg.org/multipage/obsolete.html#dom-document-all) WhatWG 의 HTML 명세된 것 -> — [“Chapter 4 - ToBoolean - Falsy values”](https://github.com/getify/You-Dont-Know-JS/blob/0d79079b61dad953bbfde817a5893a49f7e889fb/types%20%26%20grammar/ch4.md#falsy-objects) YDKJS 의 Types & Grammar +> — [“오래된 특징 - document.all”](https://html.spec.whatwg.org/multipage/obsolete.html#dom-document-all) WhatWG의 HTML 명세된 것 +> — [“Chapter 4 - ToBoolean - Falsy values”](https://github.com/getify/You-Dont-Know-JS/blob/0d79079b61dad953bbfde817a5893a49f7e889fb/types%20%26%20grammar/ch4.md#falsy-objects) YDKJS의 Types & Grammar ## 최소 값은 0 보다 크다 -`Number.MIN_VALUE`은 0 보다 큰 가장 작은 숫자입니다.: +`Number.MIN_VALUE`은 0 보다 큰 가장 작은 숫자입니다: ```js Number.MIN_VALUE > 0; // -> true @@ -410,11 +410,11 @@ Number.MIN_VALUE > 0; // -> true ### 💡 설명: -> `Number.MIN_VALUE`은 `5e-324`입니다. 즉, 부동 소수점 정밀도 내에서 표현할 수 있는 가장 작은 양수입니다. 이 말은 0 에 도달할 수 있는 가장 가까운 값이라는 의미 입니다. 이것은 소수가 제공할 수 있는 최상의 값이라고 정의 할 수 있습니다. +> `Number.MIN_VALUE`은 `5e-324`입니다. 즉, 부동 소수점 정밀도 내에서 표현할 수 있는 가장 작은 양수입니다. 이 말은 0 에 도달할 수 있는 가장 가까운 값이라는 의미 입니다. 이것은 소수가 제공할 수 있는 최상의 값이라고 정의할 수 있습니다. > > 비록 엄격하게 실제로 숫자는 아니지만 전체적으로 가장 작은 값은 `Number.NEGATIVE_INFINITY`이라고 할 수 있습니다. > -> — [“자바 스크립트에서 왜 `0`은 `Number.MIN_VALUE`보다 작습니까?”](https://stackoverflow.com/questions/26614728/why-is-0-less-than-number-min-value-in-javascript) StackOverflow 에서 +> — [“자바 스크립트에서 왜 `0`은 `Number.MIN_VALUE`보다 작습니까?”](https://stackoverflow.com/questions/26614728/why-is-0-less-than-number-min-value-in-javascript) StackOverflow에서 - [**20.1.2.9** Number.MIN_VALUE](https://www.ecma-international.org/ecma-262/#sec-number.min_value) @@ -448,7 +448,7 @@ new Foo() instanceof null; ### 💡 설명: -연결이 발생합니다.차근차근 다음을 봅시다.: +연결이 발생합니다.차근차근 다음을 봅시다: ```js [1, 2, 3] + @@ -465,7 +465,7 @@ new Foo() instanceof null; ## 배열의 후행 쉼표 -4 개의 빈 배열을 만듭니다. 그럼에도 불구하고 후행 쉼표로 인해 세가지 , 요소가 있는 배열을 얻게 됩니다.: +4 개의 빈 배열을 만듭니다. 그럼에도 불구하고 후행 쉼표로 인해 세가지 , 요소가 있는 배열을 얻게 됩니다: ```js let a = [, , ,]; @@ -477,11 +477,11 @@ a.toString(); // -> ',,' > **후행 쉼표** ("마지막 쉼표"라고도 함)는 JavaScript 에 새로운 요소, 매개 변수 또는 속성을 추가할 때 유용하게 사용할 수 있습니다. 만약 새 속성을 추가하려는 상황에서 이미 후행 쉼표를 사용하고 있는 경우 이전 마지막 줄을 수정하지 않고 새 줄을 추가할 수 있습니다. 이렇게 하면 버전 관리가 더 깔끔 해지고 코드 편집이 덜 번거로울 수 있습니다. > -> — [후행 쉼표](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas) MDN 에서 +> — [후행 쉼표](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas) MDN에서 ## 배열 평등은 몬스터 -배열 평등은 아래에서 볼 수 있듯 JS 에서는 몬스터입니다.: +배열 평등은 아래에서 볼 수 있듯 JavaScript에서는 몬스터입니다: ```js [] == '' // -> true @@ -511,11 +511,11 @@ a.toString(); // -> ',,' ### 💡 설명: -아래의 예제를 주의 깊게 살펴 보아야 합니다.! 이 동작은 [**7.2.13** 추상 동등 비교](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)에 설명되어 있습니다. +아래의 예제를 주의 깊게 살펴 보아야 합니다! 이 동작은 [**7.2.13** 추상 동등 비교](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)에 설명되어 있습니다. ## `undefined`과 `Number` -`Number`생성자에 인수를 전달하지 않으면 `0`값을 얻게 됩니다. 실제 인수가 없는 경우 `undefined`값이 형식 인수에 할당되기 때문에 인수가 없는 `Number`는 매개 변수 값으로 `undefined`을 사용합니다. 그러나 `undefined`을 통과하면 `NaN`을 얻을 수 있습니다. +`Number`생성자에 인수를 전달하지 않으면 `0` 값을 얻게 됩니다. 실제 인수가 없는 경우 `undefined`값이 형식 인수에 할당되기 때문에 인수가 없는 `Number`는 매개 변수 값으로 `undefined`를 사용합니다. 그러나 `undefined`를 통과하면 `NaN`을 얻을 수 있습니다. ```js Number(); // -> 0 @@ -526,7 +526,7 @@ Number(undefined); // -> NaN 명세된 것에 따르면: -1. 함수의 호출로 인수가 전달되지 않은 경우 `n`은 `+0`이 된다. +1. 함수의 호출로 인수가 전달되지 않은 경우 `n`은 `+0`이 됩니다. 2. 또는 let `n` be ? `ToNumber(value)`. 3. `undefined`의 경우 `ToNumber(undefined)`는 `NaN`으로 반환해야 합니다. @@ -544,7 +544,7 @@ parseInt("f*ck"); // -> NaN parseInt("f*ck", 16); // -> 15 ``` -**💡 설명:** 이는 `parseInt`알 수 없는 문자에 도달 할 때까지 문자별로 계속 구문 분석을 하기 때문에 발생합니다. `'f*ck'`에서 `f`는 16 진수로 `15`입니다. +**💡 설명:** 이는 `parseInt`알 수 없는 문자에 도달할 때까지 문자별로 계속 구문 분석을 하기 때문에 발생합니다. `'f*ck'`에서 `f`는 16 진수로 `15`입니다. `Infinity`정수로 파싱하는 것은… @@ -575,9 +575,9 @@ parseInt(null, 24); // -> 23 **💡 설명:** -> `null`을 문자열`"null"`로 변환하려고 합니다. 0 부터 23 까지의 기수에 대해서 변환할 수 있는 숫자가 없으므로 NaN 을 반환합니다. 24 에, `"n"`, 14 번째 문자가 숫자 체계에 추가됩니다. 31 에, `"u"`, 21 번째 문자가 추가되고 전체 문자열을 디코딩 할 수 있게 되었습니다. 37 에서 더이상 생성할 수 있는 유효 숫자 집합이 없으며 `NaN`이 반환됩니다. +> `null`을 문자열 `"null"`로 변환하려고 합니다. 0 부터 23 까지의 기수에 대해서 변환할 수 있는 숫자가 없으므로 NaN을 반환합니다. 24 에, `"n"`, 14 번째 문자가 숫자 체계에 추가됩니다. 31에, `"u"`, 21 번째 문자가 추가되고 전체 문자열을 디코딩 할 수 있게 되었습니다. 37에서 더 이상 생성할 수 있는 유효 숫자 집합이 없으며 `NaN`이 반환됩니다. > -> — [“parseInt(null, 24) === 23… wait, what?”](https://stackoverflow.com/questions/6459758/parseintnull-24-23-wait-what) StackOverflow 에서 +> — [“parseInt(null, 24) === 23… wait, what?”](https://stackoverflow.com/questions/6459758/parseintnull-24-23-wait-what) StackOverflow에서 8 진수에 대해서 잊지맙시다: @@ -587,7 +587,7 @@ parseInt("08"); // 8 if support ECMAScript 5 parseInt("08"); // 0 if not support ECMAScript 5 ``` -**💡 설명:** 입력 문자열이 "0"으로 시작하는 경우, 기수는 8 (octal) 또는 10 (decimal)입니다. 정확히는 어떤 기수가 선택되는가는 구현에 따라 다릅니다. ECMAScript 5 은 10 (decimal)진수를 사용하도록 지정하지만 모든 브라우저가 이것을 지원하지는 않습니다. 그러므로 `parseInt`을 사용할 때는 항상 기수를 지정합시다. +**💡 설명:** 입력 문자열이 "0"으로 시작하는 경우, 기수는 8 (octal) 또는 10 (decimal)입니다. 정확히는 어떤 기수가 선택되는가는 구현에 따라 다릅니다. ECMAScript 5는 10 (decimal)진수를 사용하도록 지정하지만 모든 브라우저가 이것을 지원하지는 않습니다. 그러므로 `parseInt`을 사용할 때는 항상 기수를 지정합시다. `parseInt`항상 입력을 문자열로 변환: @@ -622,19 +622,19 @@ true - ### 💡 설명: -`Number`생성자를 사용하여 값을 숫자로 강제 변환할 수 있습니다. `true`가 `1`로 강제되는 것은 분명합니다.: +`Number`생성자를 사용하여 값을 숫자로 강제 변환할 수 있습니다. `true`가 `1`로 강제되는 것은 분명합니다: ```js Number(true); // -> 1 ``` -단항 더하기 연산자는 값을 숫자로 변환하려고 합니다. 이것은 정수와 소수의 문자열 표현일 뿐아니라 비문자열인 `true`, `false`와 `null`값도 변환할 수 있습니다. 특정 값을 파싱할 수 없는 경우 `NaN`으로 평가됩니다. 그것은 더 쉽게 `true`를 `1`로 강제할 수 있음을 의미합니다.: +단항 더하기 연산자는 값을 숫자로 변환하려고 합니다. 이것은 정수와 소수의 문자열 표현일 뿐아니라 비문자열인 `true`, `false`와 `null`값도 변환할 수 있습니다. 특정 값을 파싱할 수 없는 경우 `NaN`으로 평가됩니다. 그것은 더 쉽게 `true`를 `1`로 강제할 수 있음을 의미합니다: ```js +true; // -> 1 ``` -덧셈 또는 곱셈을 수행할 때 `ToNumber`메서드가 호출됩니다. 명세된 것에 따르면 아래의 메서드를 반환합니다.: +덧셈 또는 곱셈을 수행할 때 `ToNumber`메서드가 호출됩니다. 명세된 것에 따르면 아래의 메서드를 반환합니다: > 만약 `argument`이 **true**이면 **1**이 반환됩니다. 만약`argument`이 **false**이면 **+0**이 반환됩니다. @@ -646,9 +646,9 @@ Number(true); // -> 1 - [**12.8.3** 더하기 연산자(`+`)](https://www.ecma-international.org/ecma-262/#sec-addition-operator-plus) - [**7.1.3** ToNumber(`argument`)](https://www.ecma-international.org/ecma-262/#sec-tonumber) -## HTML 주석은 JavaScript 에서도 유효하다 +## HTML 주석은 JavaScript에서도 유효하다 -이것이 `