์ธ์ด์ ๊ธฐ์ด
JavaScript ์ธ์ด๊ฐ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ์์ค์์ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ์์๋ณธ๋ค. ์ด๋ฌํ ๊ฒ๋ค์๋ ๋ฌธ๋ฒ๊ณผ ์ฐ์ฐ์, ๋ฐ์ดํฐ ํ์ , ๋ด์ฅ๋ ๊ธฐ๋ฅ ๋ฑ์ด ์๋ค.
#
๋ฌธ๋ฒ#
๋์๋ฌธ์ ๊ตฌ๋ถ์ด๋์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์. ๋ณ์๋ ํจ์ ์ด๋ฆ, ์ฐ์ฐ์ ๋ชจ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค. test
์ Test
๋ ๋ค๋ฅธ ๋ณ์์ด๊ณ , typeof
๋ ํค์๋๋ก ํจ์ ์ด๋ฆ์ ์ธ ์ ์์ง๋ง, typeOf
๋ ์ ํจํ ํจ์ ์ด๋ฆ์ด๋ค.
#
์๋ณ์'์๋ณ์'๋ ๋ณ์๋ ํจ์, ํ๋กํผํฐ, ํจ์ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ด๋ค. ์๋ณ์๋ ๋ค์ ํ์์๋ฐ๋ผ์ผํ๋ค.
์ฒซ ๋ฒ์งธ ๋ฌธ์๋ ๋ฐ๋์ ๊ธ์๋ ๋ฐ์ค(
_
), ๋ฌ๋ฌ ๊ธฐํธ($
) ์ค ํ๋์ฌ์ผ ํ๋ค.๋ค๋ฅธ ๋ฌธ์์๋ ๊ธ์๋ ๋ฐ์ค, ๋ฌ๋ฌ ๊ธฐํธ, ์ซ์๋ฅผ ์์ ๋กญ๊ฒ ์ธ ์ ์๋ค.
๊ธ์์๋ ํ์ฅ ASCII๋ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ์ธ ์ ์์ผ๋ ๊ถ์ฅํ์ง ์๋๋ค.
ECMAScript ์๋ณ์๋ ๊ด์ต์ ์ผ๋ก ์นด๋ฉ ์ผ์ด์ค๋ก ์ด๋ค. firstSecond
, myCar
, doSomethingImportant
...
var myVar // ovar _myVar // ovar $myVar // ovar 1myVar // ์ฒซ ๋ฒ์งธ ๋ฌธ์์๋ ์ซ์๊ฐ ์ฌ ์ ์๋ค.
#
์ฃผ์ECMAScript๋ ํ ์ค ์ฃผ์๊ณผ ๋ธ๋ก ์ฃผ์ ๋ชจ๋ C ์ธ์ด ์คํ์ผ๋ก ํ๊ธฐํ๋ค.
// ํ ์ค ์ฃผ์
/* * ์ฌ๋ฌ ์ค ์ฃผ์์ ์ธ ๋๋ * ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํ์ฌ * ์ด๋ฌํ ํ์์ ์ฌ์ฉํ๋ค. */
#
์คํธ๋ฆญํธ ๋ชจ๋์คํธ๋ฆญํธ ๋ชจ๋๋ ๊ธฐ์กด๊ณผ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก JavaScript๋ฅผ ํ์ฑํ๊ณ ์คํํ๋ผ๊ณ ์ง์ํ๋๊ฒ์ผ๋ก ์์ ํ์ง ์์ ๋์์ ๋ํด ์๋ฌ๋ฅผ ๋ฐํํ๋๋ก ํ๋ค. ์ ์ฒด ์คํฌ๋ฆฝํธ์ ์คํธ๋ฆญํธ ๋ชจ๋๋ฅผ ์ ์ฉํ๋ ค๋ฉด ๋ค์ ๋ฌธ์ฅ์ ์คํฌ๋ฆฝํธ ๋งจ ์์ ์ถ๊ฐํ๋ค.
"use strict";
ํจ์ ๋จ ํ๋๋ง ์คํธ๋ฆญํธ ๋ชจ๋๋ก ์ ์ธํ๋ ค๋ฉด ํจ์ ๋ณธ๋ฌธ ๋งจ ์์ ์ถ๊ฐํ๋ค.
function doSomething() { 'use strict'; // ํจ์ ๋ณธ๋ฌธ}
#
๋ฌธ์ฅECMAScript์์ ๊ฐ ๋ฌธ์ฅ์ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ์ข ๋ฃํ๋ค. ์ธ๋ฏธ์ฝ๋ก ์ ์๋ตํ ์๋ ์๋๋ฐ, ์๋ตํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์์ ๋ฌธ์ฅ์ด ๋๋๋ ์์น๋ฅผ ํ๋จํ๋ค.
var sum = a + b;var diff = a - b;
์ด ์ฑ ์์๋ ์ธ๋ฏธ์ฝ๋ก ์ ์ฐ๋ ๊ฒ์ ๊ถ์ฅํ๋ค. ์ธ๋ฏธ์ฝ๋ก ์ ์ฐ๋ ์ต๊ด์ ๋ค์ด๋ฉด ํ์ดํํ๋ค๊ฐ ๋ฉ์ท๋ ๋ถ๋ถ์ ๊น๋นก ์๋ ๋ฑ์ ์๋ฌ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฒฌํ ์ ์๊ณ , ์ฌ๋ถ์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํด์ ์ฝ๋๋ฅผ ์์ถํ ์๋ ์์ผ๋ฉฐ, ๋ํ ๋ฌธ์ฅ์ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋๋ด์ง ์์ ๊ฒฝ์ฐ ์์ถํ์ ๋ ๋ฌธ๋ฒ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ธ๋ฏธ์ฝ๋ก ์ ๊ดํ ์๊ฒฌ์ด ๊ฐ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค. ์์ธํ ๋ด์ฉ์ ์๋์ ๊ธ์ ์ฐธ์กฐํ๋ค.
๐ ์๋ฐ์คํฌ๋ฆฝํธ, ์ธ๋ฏธ์ฝ๋ก ์ ์จ์ผ ํ๋ ๋ง์์ผ ํ๋ | ๋ฐ์ฐ์ค
๋ํ C ์ธ์ด ์คํ์ผ์ฒ๋ผ ์ฌ๋ฌ ๋ฌธ์ฅ์ ์ฝ๋ ๋ธ๋ก์ผ๋ก ํฉ์น ์ ์๊ณ , if ๋ฌธ ๊ฐ์ ์ ์ด๋ฌธ์์ ์คํํ๋ ๋ฌธ์ฅ์ด ํ๋๋ฟ์ผ ๋๋ ์ฝ๋ ๋ธ๋ก์ ์๋ตํ ์๋ ์๋ค. ํ์ง๋ง ๋ฌธ์ฅ ํ๋๋ง ์คํํ๋๋ผ๋ ํญ์ ์ฝ๋ ๋ธ๋ก์ ์ฐ๊ธธ ๊ถ์ฅํ๋ค.
if (test) { test = false; alert(test);}
if (test) alert(test); // ๋ฌธ์ฅ์ด ํ๋๋ฟ์ด๋ผ๋ฉด ์ฝ๋ ๋ธ๋ก์ ์๋ตํ ์ ์๋ค. ํ์ง๋ง ๊ถ์ฅํ์ง ์๋๋ค.
#
ํค์๋์ ์์ฝ์ดECMAScript์๋ ์ ์ด๋ฌธ์ ์์๊ณผ ๋์ ๋ํ๋ด๊ฑฐ๋ ํน์ ํ ์กฐ์์ ์ธ ๋ชฉ์ ์ผ๋ก ์ ์๋์ด ์๋ ํค์๋๋ค์ด ์๋ค. ( break
, case
, continue
... ) ๋ํ ์์ง ํน๋ณํ์ฐ์์๊ฐ ์์ง๋ง ๋ฏธ๋์ ํค์๋๋ก ์ธ ๊ฐ๋ฅ์ฑ์ด ์์ด ์์ฝํด ๋ ์์ฝ์ด๋ค๋ ์๋ค. ์ด๋ฌํ ํค์๋์ ์์ฝ์ด๋ ์๋ณ์๋ ํ๋กํผํฐ ์ด๋ฆ์ ์ธ ์ ์์ผ๋ฏ๋ก ์ ์ํ๋ค.
๐ JavaScript Reserved Words
#
๋ณ์ECMAScript๋ ๋์จํ ๋ณ์ ํ์
์ ์ฌ์ฉํ์ฌ, ๋ณ์ ํ๋์ ์ด๋ค ํ์
์ ๋ฐ์ดํฐ๋ผ๋ ์ ์ฅํ ์ ์๋ค. ๋ณ์๋ฅผ ์ ์ํ ๋๋ var
ํค์๋๋ฅผ ์ฌ์ฉํ๋ค. ๋ํ ๋ณ์๋ฅผ ์ ์ธํ๋๋์์ ๊ฐ์ ํ ๋นํ ์ ์๋ค.
var name;var message = 'Hello';
message
๋ณ์์ ๋ฌธ์์ด "Hello" ๋ฅผ ์ ์ฅํ์ง๋ง, ์ด๋ ๊ฒ ์ด๊ธฐํํ๋ค๊ณ ํด์ ๋ณ์์๋ฌธ์์ด ํ์
์ ์ง์ ํ ๊ฒ์ ์๋๋ค. ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ๋ฐ๊ฟ ์ ์์ ๋ฟ๋ง ์๋๋ผ ํ์
์ ๋ฐ๊ฟ ์๋ ์๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ๋ณ์์ ๋ฐ์ดํฐ ํ์
์ ๋ฐ๊พธ๋ ํ์๋ ๊ถ์ฅํ์ง์๋๋ค.
var message = 'Hello';message = 100; // ๊ถ์ฅํ์ง ์์
var
์ฐ์ฐ์๋ ๋ณ์๋ฅผ ๋ก์ปฌ ์ค์ฝํ์์ ์ ์ํ๋ค. ์ฆ ํจ์ ๋ด๋ถ์์ var
ํค์๋๋ฅผ์ฌ์ฉํด ๋ณ์๋ฅผ ์ ์ํ๋ฉด ํด๋น ๋ณ์๋ ํจ์ ๋ด๋ถ์์๋ง ์ฌ์ฉํ ์ ์๊ณ , ํจ์๊ฐ ์ข
๋ฃ๋๋ ์ฆ์ ํ๊ดด๋๋ค.
function test() { var message = 'Hello'; // ๋ก์ปฌ ์ค์ฝํ}test();console.log(message); // ์๋ฌ
๊ทธ๋ฐ๋ฐ var
์ฐ์ฐ์๋ฅผ ์๋ตํ๋ฉด ํจ์ ๋ด๋ถ์์๋ ๋ณ์๋ฅผ ์ ์ญ์ผ๋ก ์ ์ํ ์ ์๋ค. ํ์ง๋ง ๊ฐ๊ธ์ ์ด ํจํด์ ํผํ๊ธธ ๊ถ์ฅํ๋๋ฐ, ์ ์ญ ๋ณ์๋ฅผ ๋ก์ปฌ์์ ์ ์ํ๋ฉด ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๊ณ , var
ํค์๋๋ฅผ ์๋์ ์ผ๋ก ์๋ตํ ๊ฒ์ธ์ง ์ค์ ์ธ์ง ๋ฐ๋ก ์ ์ ์์ด์ํผ๋์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
function test() { message = 'Hello'; // ์ ์ญ ๋ณ์}test();console.log(message); // "Hello"
๋ณ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ ๋ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ํ ๋ฌธ์ฅ์์ ์ ์ธํ ์ ์๋ค.
var message = 'hi', found = false, age = 29;
#
๋ฐ์ดํฐ ํ์์ต์ ECMAScript์๋ ์ฌ์ฏ๊ฐ์ง ๊ธฐ๋ณธ ํ์ (Primitive type)๊ณผ ํ๊ฐ์ง ์ฐธ์กฐ ํ์ (Reference type)์ 7๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ด ์ ์๋์ด ์๋ค.
๋ฐ์ดํฐ ํ์ | ์ค๋ช | ํ์ |
---|---|---|
Boolean | true , false ๋ ๊ฐ์ง ๊ฐ์ ๊ฐ์ง ์ ์๋ ๋ ผ๋ฆฌ ํ์ | ['๊ธฐ๋ณธ ํ์ '] |
Null | ๋ฑ ํ๊ฐ์ง ๊ฐ null ๋ง์ ๊ฐ์ง ์ ์๋ ํ์ | ['๊ธฐ๋ณธ ํ์ '] |
Undefined | ๊ฐ์ ํ ๋นํ์ง ์์ ๋ณ์, undefined ๊ฐ์ ๊ฐ์ง๋ ํ์ | ['๊ธฐ๋ณธ ํ์ '] |
Number | ์ซ์ ์๋ฃํ | ['๊ธฐ๋ณธ ํ์ '] |
String | ๋ฌธ์์ด ์๋ฃํ | ['๊ธฐ๋ณธ ํ์ '] |
Symbol (ECMAScript 6์ ์ถ๊ฐ๋จ) | ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ(immutable) ์์ ํ์ | ['๊ธฐ๋ณธ ํ์ '] |
Object | ์๋ณ์๋ก ์ฐธ์กฐํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฐ | ['์ฐธ์กฐ ํ์ '] |
Symbol ํ์ ์ ES6์์ ์ถ๊ฐ๋ ํ์ ์ผ๋ก ์ด ์ฑ ์์๋ ๋ค๋ฃจ์ง ์๋๋ค. Symbol ํ์ ์๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์๋์ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์.
๐ Symbol | PoiemaWeb
#
typeof ์ฐ์ฐ์ECMAScript๋ ๋์จํ ํ์ ์ ์ฑํํ์ผ๋ฏ๋ก ๋ณ์์ ๋ฐ์ดํฐ ํ์ ์ ์์๋ด์ผ ํ ๋๋ typeof ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋ณ์์ typeof ์ฐ์ฐ์๋ฅผ ์ ์ฉํ๋ฉด ๋ค์ ๋ฌธ์์ด ์ค ํ๋๋ฅผ ๋ฐํํ๋ค.
์ ์๋์ง ์์ ๋ณ์ : "undefined"
๋ถ๋ฆฌ์ธ : "boolean"
๋ฌธ์์ด : "string"
์ซ์ : "number"
ํจ์๋ฅผ ์ ์ธํ ๊ฐ์ฒด ๋๋ null : "object"
ํจ์ : "function"
typeof ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
var message = 'some string';console.log(typeof message); // stringconsole.log(typeof message); // string
typeof ๋ ํจ์๊ฐ ์๋๋ผ ์ฐ์ฐ์์ด๋ฏ๋ก ๊ดํธ๋ ์ฐ์ง ์์๋ ๋๋ค.
๋ช ๊ฐ์ง typeof์ ๊ฒฐ๊ณผ๋ค์ด๋ค.
typeof ''; // stringtypeof 1; // numbertypeof NaN; // numbertypeof true; // booleantypeof []; // objecttypeof {}; // objecttypeof new String(); // objecttypeof new Date(); // objecttypeof /test/gi; // objecttypeof function () {}; // functiontypeof undefined; // undefinedtypeof null; // object (์ค๊ณ์ ๊ฒฐํจ)typeof undeclared; // undefined (์ค๊ณ์ ๊ฒฐํจ)
typeof null === 'object';
์ ๊ฒฐ๊ณผ๊ฐ ํผ๋์ค๋ฌ์ธ ์ ์๋ค. JavaScript์ ์ฒซ ๋ฒ์งธ๋ฒ์ ์์ ๋ณ์์ ๊ฐ์ 32๋นํธ ๋จ์๋ก ์ ์ฅ๋์๋๋ฐ, 1-3๋นํธ๋ ํ์
ํ๊ทธ๋ก ๋ณ์์ ํ์
์ ๋ํด ์ ์ฅํ๊ณ ๋๋จธ์ง ๋นํธ์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ ๊ฐ์ฒด์ ํ์
ํ๊ทธ๊ฐ 000
์ด์๊ณ , null
์ ๋๋ถ๋ถ์ ํ๋ซํผ์์ 0x00
์ ๊ฐ์ง๋ NULL ํฌ์ธํฐ์์ผ๋ฏ๋ก typeof์ ๊ฒฐ๊ณผ๊ฐ "object" ๋ก ๋์ค๋ ๊ฒ์ด๋ค.
์ด์ ๋ํด ์ฑ
์์๋ null
์ด ๋น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ํน๋ณํ ๊ฐ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฐ์ด๋ผ๊ณ ์ค๋ช
ํ๊ณ , ๋ช๋ช ๊ธ์์๋ ๋ถํํ๋ ์์ ๋ ์ ์๋ ๋ฒ๊ทธ ๋๋ ์ค๊ณ์ ๊ฒฐํจ์ด๋ผ๊ณ ์ค๋ช
ํ๋ค. ๊ธฐ๋ณธ ํ์
์ผ๋ก ์ ์๋ null
์ ํ์
์ฒดํฌ ์ฐ์ฐ์ typeof์ผ๋ก ์ ์ ์๋ค๋ ๊ฒ์์๋ฌด๋๋ ํผ๋์ ์ด๋ํ๋ ๊ตฌํ์ด๋ผ๊ณ ์๊ฐ๋๋ค.
๐ typeof - MDN ๐ "typeof-null"์ ์ญ์ฌ - FEDevelopers/tech.description ๐ Type Checking | PoiemaWeb
#
undefined๋ณ์๋ฅผ ์ ์ํ ๋ ์ด๊ธฐํ ํ์ง ์๋๋ค๋ฉด undefined
๊ฐ ํ ๋น๋๋ค.
var message;console.log(message == undefined); // true
๋ช
์์ ์ผ๋ก undefined
๋ฆฌํฐ๋ด์ ํ ๋นํ ์๋ ์์ง๋ง ๊ถ์ฅํ์ง ์๋๋ค.
undefined
๋ฅผ ํตํด ์ ์๋์ง ์์ ๋ณ์์ ์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค. ํ์ง๋ง typeof๋ ์ ์๋์ง ์์ ๋ณ์์๋ ์คํ๋๋ฏ๋ก ์ ์ํ๋ค.
var message;// var age;
console.log(message); // undefinedconsole.log(age); // error
console.log(typeof message); // undefinedconsole.log(typeof age); // undefined
๋ฐ๋ผ์ ๋ณ์๋ฅผ ํญ์ ์ด๊ธฐํํ๋ ๊ฒ์ ๊ถ์ฅํ๋๋ฐ, ํญ์ ์ด๊ธฐํํ๋ค๋ฉด, typeof์์ undefined
๋ฅผ ๋ฐํํ์ ๋ ํด๋น ๋ณ์๊ฐ ์ด๊ธฐํ๋์ง ์์ ๊ฒ์ธ์ง ์ ์๋์ง ์์ ๊ฒ์ธ์ง ์ ์ ์๋ค.
#
NullNull ํ์
์ ํ๋์ ๊ฐ null
์ ๊ฐ๋๋ค. null
์ ๋น ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค. ๋ณ์๋ฅผ ์ ์ ํ ๋ ํด๋น ๋ณ์๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ ์๊ฐ์ด๋ผ๋ฉด, ํด๋น ๋ณ์๋ฅผ null
๋ก ์ด๊ธฐํํ๊ณ , ๊ฐ์ฒด๋ฅผ ์ด์ฉํ ์ ์์ ๋์๋ ํญ์ null
์ด ์ค๊ฒ ํด์ผํ๋ค. ๊ทธ๋ ๊ฒํ ๋ ํด๋น ๋ณ์๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋์ง ๋ช
์์ ์ผ๋ก ํ์ธํ ์ ์๋ค.
if (car != null) { // car๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋}
undefined
๋ null
์์ ํ์ํ์ฌ ํ๋ฉด์ ์ผ๋ก๋ ๋์ผํ ๊ฒ์ผ๋ก ์ ์๋์ด ์์ด ==
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด true
๋ฅผ ๋ฐํํ๋ค. ํ์ง๋ง ์ด๋ ==
์ฐ์ฐ์๊ฐ ์์์ ํ๋ณํ์ ํ๊ธฐ ๋๋ฌธ์ด๊ณ , ===
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด false
๋ฅผ ๋ฐํํ๋ค.
console.log(null == undefined); // trueconsole.log(null === undefined); // false
#
BooleanBoolean ํ์
์ true
์ false
๋ ๊ฐ์ง ๋ฆฌํฐ๋ด ๊ฐ์ ๊ฐ์ง๋ ๋
ผ๋ฆฌ ํ์
์ด๋ค. ๋ฆฌํฐ๋ด์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ๋๋ฌธ์ True
๋ False
๋ Boolean ํ์
์ด ์๋๋ค.
ECMAScript์์๋ ๋ชจ๋ ํ์ ์ Boolean ๊ฐ์ผ๋ก ํํํ ์ ์๋๋ฐ, Boolean() ํจ์๋ฅผํธ์ถํ๊ฑฐ๋, if ์กฐ๊ฑด๋ฌธ์ ๋ฃ์ผ๋ฉด ํด๋น ํ์ ์ Boolean์ผ๋ก ๋ฐ๊พผ๋ค.
๋ฐ์ดํฐ ํ์ | true๋ก ๋ณํ๋๋ ๊ฐ | false๋ก ๋ณํ๋๋ ๊ฐ |
---|---|---|
Boolean | true | false |
String | ๋น์ด ์์ง ์์ ๋ชจ๋ ๋ฌธ์์ด | "" (๋น ๋ฌธ์์ด) |
Number | 0์ด ์๋ ๋ชจ๋ ์ซ์, ๋ฌดํ๋ ํฌํจ | 0 , -0 , 0n , NaN |
Undefined | ํด๋น ์์ | undefined |
Object | null ์ด ์๋ ๋ชจ๋ ๊ฐ์ฒด | null |
#
NumberECMAScript๋ IEEE-754 ํ์์ ์ ์, ๋ถ๋์์์ ์ซ์ ํ์ค์ ์ฌ์ฉํ๋ค.
๊ธฐ๋ณธ์ ์ธ ์ซ์ ๋ฆฌํฐ๋ด ํ์์ 10์ง์์ด๊ณ 8์ง์, 16์ง์ ๋ฆฌํฐ๋ด ์ญ์ ์ฌ์ฉํ ์ ์๋ค. 8์ง์ ๋ฆฌํฐ๋ด์ ์ฒซ ๋ฒ์งธ ์ซ์๊ฐ 0, ๊ทธ ๋ค์๋ 0๋ถํฐ 7๊น์ง์ ์ซ์๊ฐ ์์ผํ๊ณ , ๋ฒ์ด๋๋ ์ซ์๊ฐ ์๋ค๋ฉด ์ฒ์์ 0์ ๋ฌด์ํ๊ณ 10์ง๋ฒ์ผ๋ก ์ทจ๊ธํ๋ค. (์คํธ๋ฆญํธ ๋ชจ๋์์๋ 8 ์ง๋ฒ ๋ฆฌํฐ๋ด์ ํ์ฉํ์ง ์๊ณ ๋ฌธ๋ฒ ์๋ฌ๋ฅผ ๋ฐํํ๋ค.)
16์ง์ ๋ฆฌํฐ๋ด์ ์ฒซ ๋ ๋ฌธ์์ 0x์ ์ฐ๊ณ 16์ง์ ์ซ์๋ฅผ ์ด๋ค. ๋์๋ฌธ์๋ ๊ตฌ๋ณํ์ง์๋๋ค.
var intNum = 55; // 10์ง์ ์ ์
var octNum1 = 070; // 56์ 8์ง๋ฒ ํ๊ธฐvar octNum2 = 079; // 10์ง๋ฒ 79๋ก ๊ฐ์ฃผํจvar octNum3 = 08; // 10์ง๋ฒ 8๋ก ๊ฐ์ฃผํจ
var hexNum1 = 0xa; // 10์ 16์ง๋ฒ ํ๊ธฐvar hexNum2 = 0x1f; // 31์ 16์ง๋ฒ ํ๊ธฐvar hexNum3 = 0x1f; // 31์ 16์ง๋ฒ ํ๊ธฐ (๋์๋ฌธ์ ๊ตฌ๋ณํ์ง ์์)
๋ถ๋์์์ ์ซ์๋ฅผ ํํํ๋ ค๋ฉด ๋ฐ๋์ ์์์ ์ด ์์ด์ผ ํ๋ฉฐ, ์์์ ๋ค์ ์ซ์๋ฅผ ์ด๋ค. ๋ถ๋์์์ ์ซ์๋ ์ ์๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ฐฐ ์๋ชจํ๋ฏ๋ก ECMAScript์์๋ ๊ฐ๋ฅํํ ์ ์๋ก ๋ณํํ์ฌ ์ ์ฅํ๋ ค ํ๋ค.
var floatNum1 = 1.1;var floatNum2 = 0.1;var floatNum3 = 1; // ์์์ ๋ค์ ์ซ์๊ฐ ์์ผ๋ฏ๋ก 1๋ก ๊ฐ์ฃผvar floatNum4 = 10.0; // ์์์ ๋ค๊ฐ 0์ด๋ฏ๋ก 10์ผ๋ก ๊ฐ์ฃผ
๋๋จํ ํฌ๊ฑฐ๋ ์์ ๋ถ๋์์์ ์ซ์๋ฅผ ํํํ ๋๋ 'e-ํ๊ธฐ๋ฒ(์ง์ ํ๊ธฐ๋ฒ)'์ ์ด๋ค. ์ง์ ํ๊ธฐ๋ฒ์ e ์์ ์ซ์์ 10์ e ๋ค์ ์ซ์๋งํผ ๊ณฑํ๋ ํ๊ธฐ๋ฒ์ด๋ค. e ๋ ๋์๋ฌธ์๋ฅผ ๊ฐ๋ฆฌ์ง ์๋๋ค.
var floatNum = 3.125e7; // 31,250,000
ECMAScript๋ ์์์ ๋ค์ 0์ด 6๊ฐ ์ด์ ์๋ ๋ชจ๋ ๋ถ๋์์์ ์ซ์๋ฅผ ์ง์ ํ๊ธฐ๋ฒ์ผ๋ก ๋ณํํ๋ค. ๋ถ๋์์์ ์ซ์๋ ์์์ ์๋ 17์๋ฆฌ๊น์ง ์ ํํ๊ธฐ๋ ํ์ง๋ง ์ฌ์น ์ฐ์ฐ์ ์์ด์๋ ๋ถ์ ํํ๋ค. ์๋ฅผ ๋ค์ด 0.1๊ณผ 0.2๋ฅผ ๋ํ๋ฉด 0.3์ด ์๋๋ผ 0.30000000000000004๋ฅผ ๋ฐํํ๋ค. ์ด๋ฐ ์๋ฌ ๋๋ฌธ์ ๋ถ๋์์์ ์ซ์๋ฅผ ํ๊ฐํ๊ธฐ ์ด๋ ต๋ค.
โ๏ธ ์ด ๋ฌธ์ ๋ IEEE-754 ํ์ค์ ๋ฌธ์ ์ด๊ณ ECMAScript์๋ง ์ด๋ฐ ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒ์ ์๋๋ค.
ECMAScript์๋ ํํํ ์ ์๋ ์ ์ผ ์์ ์์ ์ซ์(์ต์๊ฐ์ด ์๋)์ ์ต๋๊ฐ์ด Number ๊ฐ์ฒด์ MIN_VALUE, MAX_VALUE ํ๋กํผํฐ์ ์ ์ฅ๋์ด ์๋ค. MAX_VALUE๋ฅผ ๋๋ ์ซ์์ธ ๊ฒฝ์ฐ ์์๋ Infinity๋ก ๋ณํ๋๋ฉฐ ์์๋ -Infinity๋ก ๋ณํ๋๋ค. MIN_VALUE ์ดํ์ ์ซ์๋ 0 ๋๋ -0 ์ผ๋ก ๋ณํ๋๋ค.
์ซ์ํ ๊ฐ ์ค์๋ NaN(Not a Number)๋ผ๋ ๊ฐ์ด ์๋๋ฐ, ์ด ๊ฐ์ ์ซ์๋ฅผ ๋ฐํํ ๊ฒ์ผ๋ก์๋ํ ์กฐ์์ด ์คํจํ์ ๋ ๋ฐํํ๋ ๊ฐ์ด๋ค. ์๋ฅผ ๋ค์ด ์ด๋ค ์ซ์๋ฅผ 0์ผ๋ก ๋๋๋ ค ํ๋ฉด ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ฌ๋ฅผ ๋ฐํํ์ง๋ง, ECMAScript์์๋ NaN ์ ๋ฐํํ๊ณ ๋๋จธ์ง ์ฒ๋ฆฌ๋ ๊ณ์ ์ํํ๋ค.
๋ค์์ NaN์ ๋ช ๊ฐ์ง ํน์ง์ด๋ค.
NaN์ด ํฌํจ๋ ์กฐ์์ ํญ์ NaN์ด๋ค. (NaN / 10 = NaN)
NaN์ ์ด๋ค ๊ฐ๊ณผ๋ ์ผ์นํ์ง ์์ผ๋ฉฐ NaN ๋ผ๋ฆฌ๋ ์ผ์นํ์ง ์๋๋ค.
๋๋ฌธ์ ECMAScript์๋ isNaN()
์ด๋ผ๋ ํจ์๊ฐ ์๊ณ ์ด ํจ์๋ ๋งค๊ฐ๋ณ์๋ก ๋ค์ด์จ๊ฐ์ด '์ซ์๊ฐ ์๋ ๊ฐ'์ธ์ง ๊ฒ์ฌํ๋ค.
isNaN(NaN); // trueisNaN(undefined); // trueisNaN({}); // true
isNaN(true); // falseisNaN(null); // falseisNaN(37); // false
// stringsisNaN('37'); // false: "37" is converted to the number 37 which is not NaNisNaN('37.37'); // false: "37.37" is converted to the number 37.37 which is not NaNisNaN('37,5'); // trueisNaN('123ABC'); // true: parseInt("123ABC") is 123 but Number("123ABC") is NaNisNaN(''); // false: the empty string is converted to 0 which is not NaNisNaN(' '); // false: a string with spaces is converted to 0 which is not NaN
// datesisNaN(new Date()); // falseisNaN(new Date().toString()); // true
// This is a false positive and the reason why isNaN is not entirely reliableisNaN('blabla'); // true: "blabla" is converted to a number.// Parsing this as a number fails and returns NaN
โ๏ธ ES6์์๋ Number.inNaN() ํจ์๋ฅผ ํฌํจํ๊ณ ์ด ๋ฐฉ๋ฒ์ด ์ซ์ x ์ ๋ํด NaN ์ธ์งํ ์คํธํ๋ ๋ ๋ฏฟ์ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
์ซ์๊ฐ ์๋ ๊ฐ์ ์ซ์๋ก ๋ฐ๊พธ๋ ํจ์๋ Number()
, parseInt()
, parseFloat()
ํจ์ ์ธ ๊ฐ์ง์ด๋ค. Number()
ํจ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ํ์
์ ์ธ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ๋ ํจ์๋ ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊พธ๋๋ฐ ์ฌ์ฉํ๋ค.
Number()
ํจ์ ๊ท์น#
Boolean ํ์
true
์false
๋ ๊ฐ๊ฐ 1๊ณผ 0์ผ๋ก ๋ฐํ์ซ์๋ ๊ทธ๋๋ก ๋ฐํ.
null
์ 0undefined
๋NaN
๋ฌธ์์ด์ ๋๊ฒผ๋ค๋ฉด
๋ฌธ์์ด์ด ์ซ์๋ง์ผ๋ก ๊ตฌ์ฑ๋์๋ค๋ฉด ๋ฆฌ๋ฉ ์ ๋ก๋ฅผ ๋ชจ๋ ๋ฒ๋ฆฌ๊ณ ๋๋จธ์ง๋ฅผ 10์ง์๋ก๋ณํ. ๋ฌธ์์ด ๋งจ ์์
+
๋-
๊ธฐํธ๊ฐ ์์๋ค๋ฉด ๋ณด์กด."1.1"๊ณผ ๊ฐ์ ์ ํจํ ๋ถ๋์์์ ํ์์ด๋ผ๋ฉด ํด๋นํ๋ ๋ถ๋์์์ ์ซ์ ๋ฐํ
"0xf" ๊ฐ์ ์ ํจํ 16์ง์ ํ์์ด๋ผ๋ฉด ๊ทธ์ ํด๋นํ๋ ์ ์๋ฅผ ๋ฐํ
๋น ๋ฌธ์์ด์ด๋ผ๋ฉด 0์ ๋ฐํ
์์์ ์ค๋ช ํ ํ์์ ๋ง์ง ์์ผ๋ฉด
NaN
์ ๋ฐํ
๊ฐ์ฒด๋ฅผ ๋๊ธฐ๋ฉด
valueOf()
๋ฉ์๋ ๋ฐํ ๊ฐ์ ๋ํดNumber()
ํจ์ ๊ท์น ์ ์ฉ, ๊ฒฐ๊ณผ๊ฐNaN
์ด๋ฉดtoString()
๋ฉ์๋ ํธ์ถ ํ ๋ฌธ์์ด ๋ณํ ๊ท์น ์ ์ฉ.
var num1 = Number('Hello world'); // NaNvar num2 = Number(''); // 0var num3 = Number('000011'); // 11var num4 = Number(true); // 1
parseInt()
#
Number()
ํจ์๋ก ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊พธ๋ ค๋ฉด ๋ณต์กํ ๊ท์น์ ๊ธฐ์ตํด์ผ ํ๋ฏ๋ก ์ ์ ํํ์ ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ ๋๋ ๋ณดํต parseInt()
ํจ์๋ฅผ ์ด๋ค. parseInt()
ํจ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ค.
๋ฆฌ๋ฉ ์คํ์ด์ค๋ฅผ ์ ๋ถ ๋ฒ๋ฆฐ๋ค.
๋ฆฌ๋ฉ ์คํ์ด์ค๋ฅผ ๋ฒ๋ฆฐ ๊ฒฐ๊ณผ์ ์ฒซ ๋ฌธ์๊ฐ ์ซ์๋
+
,-
๊ธฐํธ๊ฐ ์๋๋ผ๋ฉดNaN
์ ๋ฐํํ๋ค.๋ฆฌ๋ฉ ์คํ์ด์ค๋ฅผ ๋ฒ๋ฆฐ ๊ฒฐ๊ณผ์ ์ฒซ ๋ฌธ์๊ฐ ์ซ์๋
+
,-
๊ธฐํธ๋ผ๋ฉด ์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ๋ณํ์ ์งํํ๋ค.parseInt()
ํจ์๋ 10์ง์, 16์ง์๋ฅผ ์ธ์ํ๊ณ ๊ทธ์ ๋ง๊ฒ ๋ณํํ๋ค. (ES5 ๋ถํฐparseInt
๋ 8์ง์ ๋ฌธ์์ด์ ํด์ํ์ง ์๋๋ค.)
parseInt('1234blue'); // 1234parseInt(''); // NaNparseInt('0xA'); // 10parseInt('-0xA'); // -10parseInt('22.5'); // 22
๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ํ์ฑํ๋ ค๋ ๊ฐ์ ํ์์ ์ง์ ํ ์ ์๋ค. ์ด๋ ๊ฒ ํ๋ฉด 16์ง์, 8 ์ง์ ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ์ง ์์๋ ํด๋น ํ์์ผ๋ก ํ์ฑํ๋ค.
โ๏ธ ์ง๋ฒ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์๋์ ๋ค๋ฅด๊ฒ ํด์ํ ์ ์์ผ๋ฏ๋ก ๋ ์ ๋ ฅํ๋ ๊ฒ์ด ์ข๋ค.
parseInt('10', 2); // 2parseInt('10', 8); // 8parseInt('10', 10); // 10parseInt('10', 16); // 16
parseFloat()
#
parseFloat()
ํจ์๋ 0๋ฒ์งธ ์์น๋ถํฐ ๊ฐ ๋ฌธ์๋ฅผ ๋ณํํ๋ค๋ ์ ์์ parseInt()
์๋ง์ฐฌ๊ฐ์ง์ด๋ค. parseFloat()
ํจ์๋ ๋ฌธ์์ด์ ์๋ชป๋ ๋ถ๋์์์ ์ซ์๋ฅผ ๋ง๋ ๋๊น์ง ํ์ฑ์ ๊ณ์ํ๋ค. parseInt()
์์ ๋ ๋ค๋ฅธ ์ฐจ์ด๋ ๋ฆฌ๋ฉ ์ ๋ก๋ฅผ ํญ์ ๋ฌด์ํ์ฌ, 16์ง์ ๋ฆฌํฐ๋ด์ ํญ์ 0์ผ๋ก ํด์ํ๋ค. (์ง๋ฒ ๋งค๊ฐ๋ณ์๋ฅผ ๋๊ฒจ๋ ๋ฌด์ํ๋ค) ๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด์ ์์์ ์ด ์๊ฑฐ๋ ์์์ ๋ค์ 0๋ง ์๋ค๋ฉด parseFloat()
๋ ์ ์๋ฅผ ๋ฐํํ๋ค.
parseFloat('1234blue'); // 1234parseFloat('0xA'); // 0parseFloat('22.5'); // 22.5parseFloat('22.34.5'); // 22.34parseFloat('0908.5'); // 908.5parseFloat('3.125e7'); // 31250000
#
String๋ฌธ์์ด ๋ฐ์ดํฐ ํ์
์ 16๋นํธ ์ ๋์ฝ๋ ๋ฌธ์์ ์ฐ์์ผ๋ก ํฐ๋ฐ์ดํ( "
)๋ ์์๋ฐ์ดํ( '
)๋ก ๊ฐ์ธ์ ํํํ๋ค. ํฐ๋ฐ์ดํ๋ก ๊ฐ์ผ ๋ฌธ์์ด๊ณผ ์์๋ฐ์ดํ๋ก ๊ฐ์ผ ๋ฌธ์์ด์์์ ํ ๋๊ฐ๋ค. ํฐ๋ฐ์ดํ๋ก ์์ํ ๋ฌธ์์ด์ ๋ฐ๋์ ํฐ๋ฐ์ดํ๋ก ๋๋์ผ ํ๋ฉฐ, ์์๋ฐ์ดํ๋ก ์์ํ ๋ฌธ์์ด์ ๋ฐ๋์ ์์๋ฐ์ดํ๋ก ๋๋ด์ผ ํ๋ค.
๋ฌธ์์ด ๋ฐ์ดํฐ ํ์ ์์ ์ ๋ ฅํ ์ ์๋ ๋ฌธ์ ๋ฆฌํฐ๋ด์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฆฌํฐ๋ด | ์๋ฏธ |
---|---|
\n | ์ค๋ฐ๊ฟ |
\t | ํญ |
\b | ๋ฐฑ์คํ์ด์ค |
\r | ์บ๋ฆฌ์ง ๋ฆฌํด |
\f | ํผ ํผ๋ |
\\ | ์ญ์ฌ๋์ |
\' | ์์๋ฐ์ดํ - ์์๋ฐ์ดํ๋ก ๊ฐ์ผ ๋ฌธ์์ด ์์์ ์์๋ฐ์ดํ๋ฅผ ์จ์ผํ ๋ ์ฌ์ฉ |
\" | ํฐ๋ฐ์ดํ - ํฐ๋ฐ์ดํ๋ก ๊ฐ์ผ ๋ฌธ์์ด ์์์ ํฐ๋ฐ์ดํ๋ฅผ ์จ์ผํ ๋ ์ฌ์ฉ |
\xnn | 16์ง์ ์ฝ๋ 'nn'์ผ๋ก ํํํ ๋ฌธ์. n์ 0๋ถํฐ f๊น์ง์ 16์ง์. |
\unnnn | 16์ง์ ์ฝ๋ 'nnnn'์ผ๋ก ํํํ ๋ฌธ์. n์ 0๋ถํฐ f๊น์ง์ 16์ง์. |
์ด ๋ฌธ์ ๋ฆฌํฐ๋ด์ ๋ฌธ์์ด ์ ์ด๋์๋ ์ธ ์ ์๊ณ , ํ ๋ฌธ์๋ก ์ทจ๊ธ๋๋ค.
var text = 'This is the letter sigma: \\u03a3.';
๋ฌธ์์ด์ ๊ธธ์ด๋ length
ํ๋กํผํฐ๋ฅผ ํตํด ์ป์ ์ ์๋ค. ์ด ํ๋กํผํฐ๋ ๋ฌธ์์ด์ ํฌํจ๋ 16๋นํธ ๋ฌธ์์ ๊ฐ์๋ฅผ ๋ฐํํ๋๋ฐ, ๋ฌธ์์ด์ 32๋นํธ ๋ฌธ์๊ฐ ๋ค์ด์๋ค๋ฉด length
ํ๋กํผํฐ๊ฐ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ์ ํํ ๋ฐํํ์ง ๋ชปํ ์๋ ์๋ค.
text.length; // 28
ECMAScript์ ๋ฌธ์์ด์ ๋ถ๋ณ(immutable)์ด๋ค. ์ฆ ๋ฌธ์์ด์ด ์ผ๋จ ๋ง๋ค์ด ์ง๋ฉด ๊ทธ ๊ฐ์๋ฐ๊ฟ ์ ์๋ค. ๋ณ์์ ์ ์ฅํ ๋ฌธ์์ด์ ๋ฐ๊พธ๋ ค๋ฉด ๊ธฐ์กด์ ๋ฌธ์์ด ๋์ ์ ๋ฌธ์์ด์ ํด๋น ๋ณ์์ ํ ๋นํด ์ฃผ์ด์ผ ํ๋ค.
var lang = 'Java';lang = lang + 'Script';
์ ์์ ๋ ๋จ์ํ lang
์ ๋ด๊ธด "Java" ๋ฌธ์์ด ๋ค์ "Script"๋ฅผ ๋ถ์ด๋ ๊ฒ์ผ๋ก ์๊ฐ๋์ง๋ง, ๋ด๋ถ์์๋ 10๊ธ์๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฌธ์์ด์ ๋จผ์ ๋ง๋ค๊ณ , "Java" ์ "Script"๋ฅผ ์ฑ์ "JavaScript"๋ฅผ ๋ง๋ ๋ค์, ํ์ ์์ด์ง ๊ธฐ์กด์ "Java"์ "Script"๋ฅผํ๊ดดํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
#
๋ฌธ์์ด ๋ณํ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๊ธฐ ์ํด toString()
๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
var age = 11;var ageAsString = age.toString(); // ๋ฌธ์์ด "11"var found = true;var foundAsString = found.toString(); // ๋ฌธ์์ด "true"
toString()
๋ฉ์๋๋ Number, Boolean, Object, String ์ ์กด์ฌํ๋ฉฐ, Null, Undefined ์๋ ์ด ๋ฉ์๋๊ฐ ์กด์ฌํ์ง ์๋๋ค. Number์์ toString()
๋ฉ์๋์ ์ง๋ฒ์ ๋ํ๋ด๋ ์ซ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ ์ ์๋ค.
var num = 10;console.log(num.toString()); // "10"console.log(num.toString(2)); // "1010"console.log(num.toString(8)); // "12"console.log(num.toString(10)); // "10"console.log(num.toString(16)); // "a"
String()
ํจ์๋ toString()
๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฐ์ด null
์ด๋ undefined
์ผ๊ฐ๋ฅ์ฑ์ด ์์ ๋ ์ฌ์ฉํ๋ค. String()
ํจ์๋ ๋ค์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
๊ฐ์
toString()
๋ฉ์๋๊ฐ ์กด์ฌํ๋ค๋ฉด ์ด๋ฅผ ๋งค๊ฐ๋ณ์ ์์ด ํธ์ถํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.๊ฐ์ด
null
์ด๋ฉด "null" ์ ๋ฐํํ๋ค.๊ฐ์ด
undefined
์ด๋ฉด "undefined"๋ฅผ ๋ฐํํ๋ค.
var value1 = 10;var value2 = true;var value3 = null;var value4;
console.log(String(value1)); // "10"console.log(String(value2)); // "true"console.log(String(value3)); // "null"console.log(String(value4)); // "undefined"
#
Object๊ฐ์ฒด๋ ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ์งํฉ์ด๋ค. ๊ฐ์ฒด๋ new
์ฐ์ฐ์ ๋ค์์ ์๋ก ๋ง๋ค ๊ฐ์ฒด ํ์
์ ์ด๋ฆ์ ์จ์ ๋ง๋ค ์ ์๋ค. ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋๊ธฐ์ง ์๋๋ค๋ฉด ๊ดํธ๋ฅผ ์๋ตํด๋๋์ง๋ง, ๊ถ์ฅํ์ง๋ ์๋๋ค.
var o1 = new Object();var o2 = new Object(); // ์ ํจํ์ง๋ง ๊ถ์ฅํ์ง ์๋๋ค.
Object ํ์ ์ ์ธ์คํด์ค๋ Object ํ์ ์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๋ถ ์์ํ๋ค. Object ์ธ์คํด์ค๋ ๋ค์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ค.
constructor
: ํด๋น ๊ฐ์ฒด๋ฅผ ๋ง๋๋๋ฐ ์ฐ์ธ ํจ์. ์์์๋Object()
ํจ์๊ฐ ์์ฑ์์ด๋ค.hasOwnProperty(propertyName)
: ํด๋น ํ๋กํผํฐ๊ฐ ๊ฐ์ฒด ์ธ์คํด์ค์ ๊ณ ์ ํ๋ฉฐ, ํ๋กํ ํ์ ์์ ์์ํ์ง ์์์์ ํ์ธํ๋ค.propertyName
์ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผํ๋ค.isPrototypeOf(object)
: ํด๋น ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋กํ ํ์ ์ธ์ง ํ์ธํ๋ค.propertyIsEnumerable(propertyName)
: ํด๋น ํ๋กํผํฐ๋ฅผ for-in ๋ฌธ์์ ๋์ดํ ์์๋์ง ํ์ธํ๋ค.toLocaleString()
: ๊ฐ์ฒด๋ฅผ ์ง์ญ์ ๋ง๊ฒ ํํํ ๋ฌธ์์ด์ ๋ฐํํ๋ค.toString()
: ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํด ๋ฐํํ๋ค.valueOf()
: ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ด๋ ์ซ์, Boolean์ ๋ฐํํ๋ค.toString()
๊ณผ ๊ฐ์ ๊ฐ์ ๋ฐํํ ๋๊ฐ ๋ง๋ค.
โ๏ธ ์ด๋ ECMA-262์์ ์ ์ํ๋ ๊ฐ์ฒด์ ๋ช ์ธ์ธ๋ฐ, ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ๋ชจ๋์ ์ฉํ ํ์๋ ์๋ค. ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ ํธ์คํธ ๊ฐ์ฒด์ด๋ฉฐ, ํธ์คํธ๊ตฌํ์์ ์ ์ํ๋ ๋๋ก ๋ง๋ค์ด์ง๋ค. ํธ์คํธ ๊ฐ์ฒด๋ ECMA-262๋ฅผ ๋ฐ๋ฅด์ง ์์๋ ๋๋ฏ๋ก Object๋ฅผ ์์ํ์ง ์์๋ ๋๋ค.
#
์ฐ์ฐ์#
๋จํญ ์ฐ์ฐ์๋จ ํ๋์ ๊ฐ์๋ง ์ ์ฉ๋๋ ์ฐ์ฐ์
#
์ฆ๊ฐ ์ฐ์ฐ์++age
, age++
์ฒ๋ผ ํผ์ฐ์ฐ์ ์์ด๋ ๋ค์ ์จ์ ํด๋น ๋ณ์์ 1์ ์ฆ๊ฐํ๋ ์ฐ์ฐ์์ด๋ค. ์์ ์ฐ๋ฉด ๋ฌธ์ฅ์ ํ๊ฐํ๊ธฐ ์ ์ ๋ณ์์ ๊ฐ์ ๋ฐ๊พธ๊ณ , ๋ค์ ์ฐ๋ฉด ๋ฌธ์ฅ์ ํ๊ฐํ๋ค์์ ๋ณ์์ ๊ฐ์ ๋ฐ๊พผ๋ค. ์ฆ๊ฐ ์ฐ์ฐ์๋ ์ ์ ๋ฟ๋ง์๋๋ผ ๋ฌธ์์ด์ด๋ Boolean, ๋ถ๋์์์ , ๊ฐ์ฒด์๋ ์ธ ์ ์๋ค.
์ ํจํ ์ซ์ ํํ์ ๋ฌธ์์ด์ ์ ์ฉํ๋ฉด ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊พผ ํ ์ฆ๊ฐํ๊ณ ํด๋น ๋ณ์๋ฅผ ์ซ์๋ก ๋ฐ๊พผ๋ค.
์ ํจํ ์ซ์ ํํ์ ๋ฌธ์์ด์ด ์๋๋ผ๋ฉด ๋ณ์์ ๊ฐ์
NaN
์ด ๋๋ค.false
์ธ Boolean์ ์ ์ฉํ๋ฉด ํด๋น ๊ฐ์ 0์ผ๋ก ๋ฐ๊พผ ํ ์ฆ๊ฐํ๊ณ ํด๋น ๋ณ์๋ฅผ ์ซ์๋ก ๋ฐ๊พผ๋ค.true
์ธ Boolean์ ์ ์ฉํ๋ฉด ํด๋น ๊ฐ์ 1๋ก ๋ฐ๊พผ ํ ์ฆ๊ฐํ๊ณ ํด๋น ๋ณ์๋ฅผ ์ซ์๋ก๋ฐ๊พผ๋ค.๋ถ๋์์์ ์ ์ ์ฉํ๋ฉด ๊ทธ๋๋ก ์ฆ๊ฐํ๋ค.
๊ฐ์ฒด์ ์ ์ฉํ๋ฉด ํด๋น ๊ฐ์ฒด์
valueOf
๋ฉ์๋๋ฅผ ๋จผ์ ํธ์ถํด์ ์ฆ๊ฐ์ ์ ์ฉํ ๊ฐ์ ์ป๋๋ค. ๊ฒฐ๊ณผ๊ฐNaN
์ด๋ผ๋ฉดtoString()
๋ฉ์๋๋ฅผ ํธ์ถํ ํ ๊ท์น์ ๋ค์ ์ ์ฉํ๋ค. ํด๋น ๋ณ์๋ ๊ฐ์ฒด์์ ์ซ์๋ก ๋ฐ๋๋ค.
var s1 = '2';var s2 = 'z';var b = false;var f = 1.1;var o = { valueOf: function () { return -1; },};
s1++;s2++;b++;f--;o--;
console.log(s1, s2, b, f, o); // 3 NaN 1 0.10000000000000009 -2
#
๋จํญ ํ๋ฌ์ค์ ๋จํญ ๋ง์ด๋์ค๋จํญ ํ๋ฌ์ค๋ ์ซ์ํ ๊ฐ์ ๋ํด ์๋ฌด ํจ๋ ฅ์ ์ง๋์ง ์๋๋ค. (๋ถํธ ๊ฐ์ ๊ทธ๋๋ก ์ ์ง ) ๋จํญ ๋ง์ด๋์ค๋ ์ซ์ํ ๊ฐ์ ๋ถํธ๋ฅผ ๋ฐ๊พธ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค. ๊ทธ๋ฐ๋ฐ ๋จํญ ํ๋ฌ์ค์ ๋ง์ด๋์ค๋ฅผ ์ซ์๊ฐ ์๋ ๊ฐ์ ์ ์ฉํ๋ฉด ํ ๋ณํ ํจ์์ธ Number()
์ ๋ง์ฐฌ๊ฐ์ง๋ก๋์ํ๊ณ , ๊ทธ ์ดํ์ ๋ถํธ๋ฅผ ์ ์ฉ ํ๋ค.
#
๋นํธ ์ฐ์ฐ์ECMAScript์์ ๋ชจ๋ ์ซ์๋ 64๋นํธ ํ์์ผ๋ก ์ ์ฅ๋๋๋ฐ, ๋นํธ ์ฐ์ฐ์๋ ์ด๋ฌํ 64๋นํธ ํํ์ ์ง์ ์กฐ์ํ๋ ๋์ 32๋นํธ ์ ์๋ก ๋ณํํ์ฌ ๋นํธ ์ฐ์ฐ์๋ฅผ ์ ์ฉํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ 64๋นํธ๋ก ๋ฐ๊พผ๋ค. ๋ถํธ๊ฐ ์๋ ์ ์๋ 32๋นํธ ์ค ๋งจ ์์ ๋นํธ๋ก ๋ถํธ๋ฅผ ๋ํ๋ด๊ณ ๋๋จธ์ง 31๋นํธ๋ก ์ซ์์ ๊ฐ์ ๋ํ๋ธ๋ค. ์๋ฅผ ๋ค์ด 18์ 00000000000000000000000000010010์ด๋ค.
์์๋ '2์ ๋ณด์' ํ์์ ์ฌ์ฉํ๋ค. 2์ ๋ณด์๋ ๋ค์์ ์ธ ๋จ๊ณ๋ฅผ ํตํด ๊ณ์ฐํ๋ค.
์ ๋ ๊ฐ์ 2์ง ํํ์ ๊ตฌํ๋ค. ์๋ฅผ ๋ค์ด -18์ ์ฐพ์ผ๋ ค๋ฉด ๋จผ์ 18์ ์ด์ง ํํ์ ๊ตฌํ๋ค.
๊ทธ ์ด์ง ํํ์ ๋ชจ๋ 0์ 1๋ก ๋ฐ๊พธ๊ณ 1์ ๋ชจ๋ 0์ผ๋ก ๋ฐ๊พผ๋ค.
๊ฒฐ๊ณผ์ 1์ ๋ํ๋ค.
์ด๋ ๊ฒ ์ป์ -18์ ์ด์ง ํํ์ 11111111111111111111111111101110 ์ด๋ค.
์์ 2์ง ๋ฌธ์์ด๋ก ์ป์ผ๋ ค๊ณ ํ๋ฉด ์ ๋๊ฐ์ 2์ง ํํ์ ๋ง์ด๋์ค ๋ถํธ๋ฅผ ๋ถ์ธ ๊ฐ์ ์ป๋๋ค.
var num = -18;console.log(num.toString(2)); // "-10010"
๊ทธ๋ฆฌ๊ณ ๋นํธ ์ฐ์ฐ์์๋ ์ซ์ ํ์
์ ํน๋ณํ ๊ฐ์ธ NaN
๊ณผ Infinity
๋ฅผ 0๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ทจ๊ธํ๋ค.
๋ํ ์ซ์๊ฐ ์๋ ๊ฐ์ ๋นํธ ์ฐ์ฐ์๋ฅผ ์ ์ฉํ๋ฉด ๋จผ์ ๊ฐ์ Number()
ํจ์๋ฅผ ์ ์ฉํด์ซ์๋ก ๋ฐ๊พผ ๋ค์ ๋นํธ ์ฐ์ฐ์ ์ ์ฉํ๋ค. ๊ฒฐ๊ณผ ๊ฐ์ ์ซ์๊ฐ ๋๋ค.
์ฐ์ฐ์ | ์ฌ์ฉ๋ฐฉ๋ฒ | ์ค๋ช | |
---|---|---|---|
๋นํธ AND | a & b | ํผ์ฐ์ฐ์๋ฅผ ๋นํธ๋ก ๋ฐ๊ฟจ์ ๋ ๊ฐ๊ฐ ๋์ํ๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ด๋ฉด ๊ทธ ๋นํธ๊ฐ์ 1์ ๋ฐํ | |
๋นํธ OR | a | b | ํผ์ฐ์ฐ์๋ฅผ ๋นํธ๋ก ๋ฐ๊ฟจ์ ๋ ๊ฐ๊ฐ ๋์ํ๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ด๊ฑฐ๋ ํ ์ชฝ์ด 1์ด๋ฉด 1์ ๋ฐํ |
๋นํธ XOR | a ^ b | ํผ์ฐ์ฐ์๋ฅผ ๋นํธ๋ก ๋ฐ๊ฟจ์ ๋ ๋์ํ๋ ๋นํธ๊ฐ ์๋ก ๋ค๋ฅด๋ฉด 1์ ๋ฐํ | |
๋นํธ NOT | ~ a | ํผ์ฐ์ฐ์์ ๋ฐ์ ๋ ๊ฐ์ ๋ฐํ | |
์ผ์ชฝ ์ํํธ | a << b | a ๋ฅผ b (< 32) ๋นํธ๋งํผ ์ผ์ชฝ์ผ๋ก ์ํํธ, ๋งจ ์ค๋ฅธ์ชฝ ๋นํธ๋ 0์ผ๋ก ์ฑ์์ง | |
๋ถํธ ์ ์ง ์ค๋ฅธ์ชฝ ์ํํธ | a >> b | a ๋ฅผ b (< 32) ๋นํธ๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ํํธ, ๋งจ ์ผ์ชฝ ๋นํธ๋ ๋ถํธ๋๋ก ์ฑ์์ง๋ค | |
๋ถํธ ๋ฒ๋ฆผ ์ค๋ฅธ์ชฝ ์ํํธ | a >>> b | a ๋ฅผ b (< 32) ๋นํธ๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ํํธ, ๋งจ ์ผ์ชฝ ๋นํธ๋ 0์ผ๋ก ์ฑ์์ง (๋ถํธ๊ฐ ์ ์ง๋์ง ์๋๋ค) |
#
๋ ผ๋ฆฌ ์ฐ์ฐ์๋ ผ๋ฆฌ ์ฐ์ฐ์๋ ๋ณดํต Boolean ํ์ ์ ๊ฐ๊ณผ ํจ๊ป ์ฐ์ธ๋ค. ๊ทธ๋ฐ๋ฐ Boolean ์ธ์ ๋ค๋ฅธ ๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด Boolean์ด ์๋ ๊ฒ์ ๋ฐํํ ์ ์๋ค.
์ฐ์ฐ์ | ๊ตฌ๋ฌธ | ์ค๋ช | ||||
---|---|---|---|---|---|---|
๋ ผ๋ฆฌ AND ( && ) | expr1 && expr2 | expr1 ์ true ๋ก ๋ณํํ ์ ์๋ ๊ฒฝ์ฐ expr2 ์ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด expr1 ์ ๋ฐํํฉ๋๋ค. | ||||
๋ ผ๋ฆฌ OR ( | ) | expr1 | expr2 | expr1 ์ true ๋ก ๋ณํํ ์ ์์ผ๋ฉด expr1 ์ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด expr2 ๋ฅผ ๋ฐํํฉ๋๋ค. | ||
๋ ผ๋ฆฌ NOT ( ! ) | !expr | ๋จ์ผ ํผ์ฐ์ฐ์๋ฅผ true ๋ก ๋ณํํ ์ ์์ผ๋ฉด false ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด true ๋ฅผ ๋ฐํํฉ๋๋ค. |
true
๋ false
๋ก ๋ณํ๋ ์ ์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์
์ ๊ฐ๋ค์ ๋ํด์๋ ์์์ ์ดํด๋ณด์๋ค. ๋
ผ๋ฆฌ NOT ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ์์ ๋ฅผ ํตํด ๋ณต์ตํด๋ณธ๋ค.
console.log(!false); // trueconsole.log(!'blue'); // falseconsole.log(!0); // trueconsole.log(!NaN); // trueconsole.log(!''); // trueconsole.log(!12345); // false
์ด๋ ๊ฒ ๋
ผ๋ฆฌ NOT ์ฐ์ฐ์๋ ๋จผ์ ํผ์ฐ์ฐ์๋ฅผ Boolean ๊ฐ์ผ๋ก ๋ณํํ ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ ํ๋ค. ๋ฐ๋ผ์ NOT ์ฐ์ฐ์๋ฅผ ๋ ๋ฒ ์ฐ๋ ๊ฒ์ผ๋ก Boolean()
ํจ์๋ฅผ ์ด ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์งํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
#
๋จ๋ฝ ํ๊ฐ(short-circuit)๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋ ผ๋ฆฌ ํํ์์ ๊ฒฝ์ฐ, ์ข์ธก๋ถํฐ ํ๊ฐํ๋ฉด์ ์ฒซ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ฅผํ๊ฐํ ์๊ฐ ์ด๋ฏธ ์ฐ์ฐ์์ ๊ฒฐ๊ณผ๊ฐ ์ ํด์ง๋ค๋ฉด ๋ค์ ํผ์ฐ์ฐ์๋ฅผ ํ๊ฐํ์ง ์๋๋ค. ์ด๋ฅผ ๋จ๋ฝ ํ๊ฐ๋ผ๊ณ ํ๋ฉฐ, ์ด๋ ๊ฒ ํจ์ผ๋ก ํ๊ฐ ์ค ๋ฐ์ํด์ผํ ๋ถ์์ฉ์ด ๋ํ๋์ง ์๋๋ค .
(๊ฑฐ์ง ํํ์) && expr
๋ ๊ฑฐ์ง ํํ์์ผ๋ก,expr
๋ฅผ ํ๊ฐํ์ง ์๋๋ค.(์ฐธ ํํ์) || expr
๋ ์ฐธ ํํ์์ผ๋ก,expr
๋ฅผ ํ๊ฐํ์ง ์๋๋ค.
#
๊ณฑ์ ๊ด๋ จ ์ฐ์ฐ์ECMAScript์๋ ๊ณฑ์
, ๋๋์
, ๋๋จธ์ง์ ์ธ ๊ฐ์ง ๊ณฑ์
๊ด๋ จ ์ฐ์ฐ์๊ฐ ์๋ค. ์ด ์ฐ์ฐ์๋ค์ C, Java ๊ฐ์ ์ธ์ด์ ์ฐ์ฐ์์ ๋น์ทํ๊ฒ ๋์ํ์ง๋ง ์ซ์๊ฐ ์๋ ๊ฐ์ ์ ์ฉํ ๋์๋์ผ๋ก ํผ์ฐ์ฐ์์ ํ์
์ ๋ฐ๊พธ๋ ์ ์ด ๋ค๋ฅด๋ค. ํผ์ฐ์ฐ์๊ฐ ์ซ์๊ฐ ์๋ ๊ฒฝ์ฐ, Number()
ํจ์๋ฅผ ์ด์ฉํด ํ์
์ ๋ฐ๊พผ๋ค.
#
๊ณฑ์ ๊ณฑ์
์ฐ์ฐ์๋ ์์คํ
๋ฆฌ์คํฌ( *
)๋ฅผ ์จ์ ๋ ์ซ์๋ฅผ ๊ณฑํ๋๋ฐ ์ฐ์ธ๋ค.
var result = 34 * 56;
ํ์ง๋ง ํน๋ณํ ๊ฐ์ ๋ํด์ ๋ค์์ ํ๋์ ์ทจํ๋ค.
๊ฒฐ๊ณผ๊ฐ ์ซ์๋ก ํํํ ์ ์๋ ๋ฒ์๋ฅผ ๋์ผ๋ฉด
Infinity
๋-Infinity
๋ฅผ ๋ฐํํ๋ค.ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ
NaN
์ด๋ฉด ๊ฒฐ๊ณผ๋NaN
์ด๋ค.Infinity
์ 0์ ๊ณฑํ๋ฉด ๊ฒฐ๊ณผ๋NaN
์ด๋ค.Infinity
์ 0์ด ์๋ ์ ํํ ์ซ์๋ฅผ ๊ณฑํ๋ฉด ๊ฒฐ๊ณผ๋ ๋ถํธ์ ๋ฐ๋ผInfinity
๋๋-Infinity
์ด๋ค.ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ์ซ์๊ฐ ์๋๋ผ๋ฉด
Number()
๋ฅผ ์ ์ฉํ๊ณ ๊ธฐํ ๊ท์น์ ์ ์ฉํด์ซ์๋ก ๋ณํํ๋ค.
#
๋๋์ ๋๋์
์ฐ์ฐ์๋ ์ฌ๋์( /
) ๊ธฐํธ๋ก ํํํ๋ฉฐ ์ฒซ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ฅผ ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ก ๋๋๋ค.
var result = 66 / 11;
๋๋์ ์ฐ์ฐ์๋ ํน๋ณํ ๊ฐ์ ๋ํด์๋ ๋ค์์ ํ๋์ ์ทจํ๋ค.
๊ฒฐ๊ณผ๊ฐ ์ซ์๋ก ํํํ ์ ์๋ ๋ฒ์๋ฅผ ๋์ผ๋ฉด
Infinity
๋-Infinity
๋ฅผ ๋ฐํํ๋ค.ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ
NaN
์ด๋ฉด ๊ฒฐ๊ณผ๋NaN
์ด๋ค.Infinity
๋ฅผInfinity
๋ก ๋๋ ๊ฒฐ๊ณผ๋NaN
์ด๋ค.0์ 0์ผ๋ก ๋๋ ๊ฒฐ๊ณผ๋
NaN
์ด๋ค.0์ด ์๋ ์ ํํ ์ซ์๋ฅผ 0์ผ๋ก ๋๋ ๊ฒฐ๊ณผ๋ ๋ถํธ์ ๋ฐ๋ผ
Infinity
๋๋-Infinity
์ด๋ค.Infinity
์ ์ซ์๋ก ๋๋ ๊ฒฐ๊ณผ๋ ๊ฒฐ๊ณผ๋ ๋ถํธ์ ๋ฐ๋ผInfinity
๋๋-Infinity
์ด๋ค.ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ์ซ์๊ฐ ์๋๋ผ๋ฉด
Number()
๋ฅผ ์ ์ฉํ๊ณ ๊ธฐํ ๊ท์น์ ์ ์ฉํด์ซ์๋ก ๋ณํํ๋ค.
#
๋๋จธ์ง๋๋จธ์ง ์ฐ์ฐ์๋ ํผ์ผํธ( %
) ๊ธฐํธ๋ก ๋ํ๋ด๋ฉฐ ์ฒซ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ฅผ ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ฐํํ๋ค.
var result = 26 % 5; // 1
๋๋จธ์ง ์ฐ์ฐ์๋ ํน๋ณํ ๊ฐ์ ๋ํด์๋ ๋ค์์ ํ๋์ ์ทจํ๋ค.
๋ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ์ซ์๋ผ๋ฉด ์ผ๋ฐ์ ์ธ ๋๋์ ์ ์ ์ฉํ๊ณ ๋๋จธ์ง๋ฅผ ๋ฐํํ๋ค.
์ขํญ์ด ๋ฌดํํ ์ซ์์ด๊ณ ์ฐํญ์ด ์ ํํ ์ซ์๋ผ๋ฉด ๊ฒฐ๊ณผ๋
NaN
์ด๋ค.์ขํญ์ด ์ ํํ ์ซ์์ด๊ณ ์ฐํญ์ด 0์ด๋ผ๋ฉด ๊ฒฐ๊ณผ๋
NaN
์ด๋ค.Infinity
๋ฅผInfinity
๋ก ๋๋ ๊ฒฐ๊ณผ๋NaN
์ด๋ค.์ขํญ์ด ์ ํํ ์ซ์์ด๊ณ ์ฐํญ์ด ๋ฌดํํ ์ซ์๋ผ๋ฉด ๊ฒฐ๊ณผ๋ ์ขํญ์ด๋ค.
์ขํญ์ด 0์ด๊ณ ์ฐํญ์ด 0์ด ์๋ ์ซ์๋ผ๋ฉด ๊ฒฐ๊ณผ๋ 0์ด๋ค.
ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ์ซ์๊ฐ ์๋๋ผ๋ฉด
Number()
๋ฅผ ์ ์ฉํ๊ณ ๊ธฐํ ๊ท์น์ ์ ์ฉํด์ซ์๋ก ๋ณํํ๋ค.
#
๋ง์ ๊ด๋ จ ์ฐ์ฐ์๋ง์ ๊ณผ ๋บ์ ์ฐ์ฐ์๋ ๋จ์ํ ์ํ ์ฐ์ฐ์์ด์ง๋ง, ๋ฌธ์์ด๊ฐ์๋ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก์ฃผ์ํด์ผ ํ๋ค.
#
๋ง์ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ๋ฌธ์์ด์ด๋ผ๋ฉด ๋ ๋ฒ์งธ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ํฉ์น๋ค.
ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ๋ฌธ์์ด์ด๋ผ๋ฉด ๋ค๋ฅธ ํผ์ฐ์ฐ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๊ณ ๋ ๋ฌธ์์ด์ํฉ์น๋ค.
var result1 = 5 + 5; // 10var result2 = 5 + '5'; // "55"
#
๋บ์ - ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ String, Boolean, null, undefined ๋ผ๋ฉด
Number()
ํจ์๋ฅผ ํธ์ถํด ์ซ์๋ก ๋ณํํ ํ ๋บ์ ํ๋ค.
var result1 = '5' - '3'; // 2var result2 = 7 - '2'; // 5
#
๊ด๊ณ ์ฐ์ฐ์๊ด๊ณ ์ฐ์ฐ์์๋ ๋ฏธ๋ง( <
), ์ด๊ณผ( >
), ์ดํ( <=
), ์ด์( >=
) ์ฐ์ฐ์๊ฐ ์๋ค. ์ด๋ค์ ์ผ๋ฐ์ ์ธ ์ํ ๊ธฐํธ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ ๊ฐ์ ๋น๊ตํ๋ค.
var result1 = 5 > 3; // truevar result2 = 5 < 3; // false
ํ์ง๋ง ECMAScript์์๋ ๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋ผ ๋ณํํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ค.
ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ์ซ์์ด๋ฉด ์ซ์ํ ๋น๊ต๋ฅผ ํ๋ค.
ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ๋ฌธ์์ด์ด๋ฉด, ๋ฌธ์์ด์์ ์๋ก ๋์ํ๋ ๋ฌธ์์ ๋ฌธ์ ์ฝ๋๋ฅผ ๋น๊ตํ๋ค.
ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ์ซ์๋ผ๋ฉด ๋ค๋ฅธ ํผ์ฐ์ฐ์๋ฅผ ์ซ์๋ก ๋ณํํ ํ ๋น๊ตํ๋ค.
ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ๊ฐ์ฒด๋ผ๋ฉด
valueOf()
๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ด์ ๊ท์น์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๋ค.valueOf
๋ฉ์๋๊ฐ ์์ผ๋ฉดtoString()
๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ด์ ๊ท์น์ ๋ฐ๋ผ ๊ทธ ๊ฐ์ ๋น๊ตํ๋ค.ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ๋ถ๋ฆฌ์ธ์ด๋ผ๋ฉด ์ซ์๋ก ๋ฐ๊พผ ํ ๋น๊ตํ๋ค.
๊ด๊ณ ์ฐ์ฐ์์ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ๋ฌธ์์ด์ผ ๋๊ฐ ํนํ ์ฃผ์๋ฅผ ์ํ๋๋ฐ, ๊ด๊ณ ์ฐ์ฐ์๋ฅผ๋ฌธ์์ด์ ์ ์ฉํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ๋ฌธ์ ์ฝ๋์ ๋ ๋ฒ์งธ ๋ฌธ์์ด์ ๋ฌธ์ ์ฝ๋๋ฅผ ๋์ํ๋ฉฐ ๋น๊ตํ๋ค. ๊ทธ๋ฐ๋ฐ ๋๋ฌธ์์ ๋ฌธ์ ์ฝ๋๋ ์๋ฌธ์์ ๋ฌธ์ ์ฝ๋๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ๋ค์์ ์ํฉ์ด ๋ฐ์ํ๋ค.
var result = 'Brick' < 'alphabet'; // true
๋ฐ๋ผ์ ๋ ๋ฌธ์์ด์ ์ํ๋ฒณ ์์๋ฅผ ๋น๊ตํ๋ ค๋ฉด ๋ ๋ฌธ์์ด์ ๋์๋ฌธ์๋ฅผ ํต์ผํ ๋ค์๋น๊ตํด์ผ ํ๋ค.
var result = 'Brick'.toLowerCase() < 'alphabet'.toLowerCase(); // false
๋ํ ์ซ์ ํํ์ ๋ฌธ์์ด์ ๋น๊ตํ๋ ๊ฒฝ์ฐ์๋ ์ฐฉ๊ฐํ๊ธฐ ์ฝ๋ค.
var result = '23' < '3'; // true
์ด ์ฝ๋๋ ๋ฌธ์์ด "23"์ "3"๋ณด๋ค ์๋ค๊ณ ํ๊ฐํ๋๋ฐ, ๋ฌธ์์ด ๊ฐ์ ์๋ก ๋์ํ๋ ๋ฌธ์ ์ฝ๋๋ผ๋ฆฌ("2"์ "3"์ ๋ฌธ์ ์ฝ๋) ๋น๊ตํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ์ซ์๋ผ๋ฉด ๋ค์์ฒ๋ผ ์์์ ์ธ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
var result = '23' < 3; // false
๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ ์ ์์ ๋๋ ๋ฌธ์์ด์ด NaN
์ด ๋๋๋ฐ, NaN
๊ณผ์ ๋น๊ต๋ํญ์ false
์ด๋ค.
var result = 'a ' < 3; // "a"๋ NaN์ผ๋ก ๋ณํ๋๋ฏ๋ก false
#
๋์ผ ์ฐ์ฐ์๋ฌธ์์ด์ด๋ ์ซ์, Boolean ๋ฑ์ ๋ ๊ฐ์ด ๋์ผํ์ง ์์๋ณด๊ธฐ๊ฐ ๋งค์ฐ ๊ฐ๋จํ์ง๋ง, ๊ฐ์ฒด๊ฐ ๊ฒฐ๋ถ๋๋ฉด ๋ณต์กํด์ง๋ค. ECMAScript์๋ ์ฐ์ฐ์๋ฅผ ๋ ๋ฒ๋ก ๋ถ๋ฆฌํ์ฌ, '๋์ผ'๊ณผ '๋น๋์ผ' ์ฐ์ฐ์๋ ๋น๊ตํ๊ธฐ ์ ์ ํ์ ์ ๋ณํํ๊ณ , '์ผ์น'์ '๋ถ์ผ์น' ์ฐ์ฐ์๋ ํ์ ๋ณํ์์ด ๋น๊ตํ๋ ๊ฒ์ผ๋ก ์ ํ๋ค.
#
๋์ผ๊ณผ ๋น๋์ผ๋์ผ ์ฐ์ฐ์๋ ==
์ด๊ณ ๋น๋์ผ ์ฐ์ฐ์๋ !=
์ด๋ค. ๋ ์ฐ์ฐ์ ๋ชจ๋ ํผ์ฐ์ฐ์๋ฅผ ๋น๊ตํ๊ธฐ ์ ์ ๋ณํํ๋ค.
๋ณํํ ๋๋ ๋ค์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
ํผ์ฐ์ฐ์๊ฐ Boolean์ผ ๋๋ ์ซ์ํ ๊ฐ์ผ๋ก ๋ณํํ๋ค.
ํผ์ฐ์ฐ์ ํ๋๊ฐ ๋ฌธ์์ด์ด๊ณ ํ๋๊ฐ ์ซ์๋ผ๋ฉด ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ ์ ์๋์ง ์๋ํ๋ค.
ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ ๊ฐ์ฒด์ด๊ณ ๋ค๋ฅธ ํ๋๊ฐ ๊ฐ์ฒด๊ฐ ์๋๋ผ๋ฉด, ๊ฐ์ฒด์
valueOf()
๋ฉ์๋๋ฅผ ํธ์ถํด ์์ ๊ฐ์ผ๋ก ๋ฐ๊พผ ํ ์ด์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
๋น๊ตํ ๋๋ ๋ค์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
null
๊ณผundefined
๋ ๋์ผํ๋ค.null
,undefined
๋ ๋์ผ ์ฌ๋ถ๋ฅผ ํ๊ฐํ ๋ ๊ฒฐ์ฝ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณํํ์ง ์๋๋ค .ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ
NaN
์ด๋ผ๋ฉด ๋์ผ ์ฐ์ฐ์๋ ํญ์false
๋ฅผ ๋ฐํํ๋ฉฐ ๋น๋์ผ์ฐ์ฐ์๋ ํญ์true
๋ฅผ ๋ฐํํ๋ค.NaN
์NaN
๊ณผ๋ ๊ฐ์ง ์๋ค.๋ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ๊ฐ์ฒด๋ผ๋ฉด ๊ฐ์ ๊ฐ์ฒด์ธ์ง ๋น๊ตํ๋ค. ๋ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค๋ฉด
true
, ๊ทธ๋ ์ง ์๋ค๋ฉดfalse
๋ฅผ ๋ฐํํ๋ค.
โ๏ธ ๊ฐ์ฒด๋ผ๋ฆฌ ๋น๊ตํ ๋๋ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋น๊ตํ๋ค๋ ์ ์ ์ดํดํด์ผ ํ๋ค.
#
์ผ์น์ ๋ถ์ผ์น์ผ์น/๋ถ์ผ์น ์ฐ์ฐ์๋ ๋์ผ/๋น๋์ผ ์ฐ์ฐ์์ ๊ฐ์ ์ผ์ ํ์ง๋ง ํผ์ฐ์ฐ์์ ํ์
์ ๋ณํํ์ง ์๊ณ ์๋ ๊ทธ๋๋ก ๋น๊ตํ๋ค. ์ผ์น ์ฐ์ฐ์๋ ===
์ด๊ณ , ๋ถ์ผ์น์ฐ์ฐ์๋ !==
์ด๋ค.
์ผ์น/๋ถ์ผ์น ์ฐ์ฐ์๋ฅผ ์ฐ๋ฉด ๋ฐ์ดํฐ ํ์ ์ ๋ณํํ์ง ์๊ณ ๋น๊ตํ๋ฏ๋ก ์ดํดํ๊ธฐ ์ฝ๊ณ , ๋ฐ์ดํฐ ํ์ ์ ๊ด๋ฆฌํ๊ธฐ ์ฌ์์ง๋ค.
#
3ํญ ์ฐ์ฐ์3ํญ ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด boolean_expression์ ํ๊ฐํ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ ์ฌ์ฉํ๋๋ก ํ ์ ์๋ค.
variable = boolean_expression ? true_value : false_value;
#
ํ ๋น ์ฐ์ฐ์ํ ๋น์ =
์ผ๋ก ๋ํ๋ด๋ฉฐ ๋จ์ํ ๊ฐ์ ๋ณ์์ ํ ๋นํ๋ค.
var num = 10;
๋ํ ์ฌ์น์ฐ์ฐ๊ณผ ๋ค๋ฅธ ์ฐ์ฐ์๋ฅผ ๋ณตํฉ ํ ๋น์ผ๋ก ์ธ ์ ์๋ค.
์ด๋ฆ | ๋จ์ถ ์ฐ์ฐ์ | ์๋ฏธ | ||
---|---|---|---|---|
ํ ๋น | x = y | x = y | ||
๋ง์ ํ ๋น | x += y | x = x + y | ||
๋บ์ ํ ๋น | x -= y | x = x - y | ||
๊ณฑ์ ํ ๋น | x *= y | x = x * y | ||
๋๋์ ํ ๋น | x /= y | x = x / y | ||
๋๋จธ์ง ์ฐ์ฐ ํ ๋น | x %= y | x = x % y | ||
์ง์ ์ฐ์ฐ ํ ๋น | x **= y | x = x ** y | ||
์ผ์ชฝ ์ํํธ ํ ๋น | x <<= y | x = x << y | ||
์ค๋ฅธ์ชฝ ์ํํธ ํ ๋น | x >>= y | x = x >> y | ||
๋ถํธ์๋ ์ค๋ฅธ์ชฝ ์ํํธ ํ ๋น | x >>>= y | x = x >>> y | ||
๋นํธ AND ํ ๋น | x &= y | x = x & y | ||
๋นํธ XOR ํ ๋น | x ^= y | x = x ^ y | ||
๋นํธ OR ํ ๋น | x | = y | x = x | y |
#
์ผํ ์ฐ์ฐ์์ผํ ์ฐ์ฐ์๋ ์ฌ๋ฌ ๋ฌธ์ฅ์ ํ ๋ฌธ์ฅ์ผ๋ก ํฉ์น ๋ ์ฌ์ฉํ๋ค.
var num1 = 1, num2 = 2, num3 = 3;
#
์ ์ด๋ฌธ#
if ๋ฌธif (condition) statement1 else statement2
#
do-while ๋ฌธdo-while ๋ฌธ์ ๋ฃจํ์ ์ข ๋ฃ ์กฐ๊ฑด์ ํ๊ฐํ๊ธฐ ์ ์ ๋ฃจํ ๋ณธ๋ฌธ์ ์คํํ๋ค. ์ฆ ๋ฃจํ ๋ณธ๋ฌธ์ ์ต์ ํ ๋ฒ ์ด์ ์คํ๋๋ค.
do { statement;} while (expression);
#
while ๋ฌธwhile ๋ฌธ์ ๋ฃจํ ๋ณธ๋ฌธ์ ์คํํ๊ธฐ ์ ์ ์ข ๋ฃ ์กฐ๊ฑด์ ํ๊ฐํ๋ค.
while (expression) statement;
#
for ๋ฌธfor ๋ฌธ ์ญ์ ๋ฃจํ ๋ณธ๋ฌธ์ ์คํํ๊ธฐ ์ ์ ์ข ๋ฃ ์กฐ๊ฑด์ ํ๊ฐํ๋๋ฐ, ๋ฃจํ์ ๋ค์ด๊ฐ๊ธฐ ์ ๋ณ์๋ฅผ ์ด๊ธฐํํ๊ณ , ๋ฃจํ ํ ์ฝ๋๋ ์ง์ ํ ์ ์๋ค.
for (initialization; expression; post - loop - expression) statement;
#
for-in ๋ฌธfor-in ๋ฌธ์ ์๊ฒฉํ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ๋์ดํ๋๋ฐ ์ฌ์ฉํ๋ค.
for (property in expression) statement;
for-in ๋ฌธ์ ๊ฐ์ฒด์ ๋ชจ๋ ํ๋กํผํฐ๋ฅผ ๋์ดํ๋๋ฐ, ECMAScript์์๋ ๊ฐ์ฒด ํ๋กํผํฐ์์์๊ฐ ์์ผ๋ฏ๋ก ์ด๋ค ์์๋ก ํ๋กํผํฐ ์ด๋ฆ์ ๋ฐํํ ์ง ์์ธกํ ์ ์๋ค.
#
๋ฌธ์ฅ ๋ ์ด๋ธ๋ฌธ์ฅ์ ๋ ์ด๋ธ์ ๋ถ์๋ค๊ฐ ๋์ค์ ์ฌ์ฉํ ์ ์๋ค.
label: statement;
๋ค์ ์์ ๋ฅผ ์ฐธ๊ณ ํ๋ค.
start: for (var i = 0; i < count; i++) { console.log(i);}
์ด ์์ ์์ ์ด ๋ ์ด๋ธ start๋ฅผ ๋์ค์ break๋ continue ๋ฌธ์์ ์ฐธ์กฐํ ์ ์๋ค.
#
break ๋ฌธ๊ณผ continue ๋ฌธbreak ๋ฌธ์ ์ฆ์ ๋ฃจํ์์ ๋น ์ ธ๋๊ฐ ๋ฃจํ ๋ค์ ๋ฌธ์ฅ์ ์คํํ๋ค. ๋ฐ๋ฉด์ continue ๋ฌธ์ ๋ฃจํ๋ฅผ ์ฆ์ ๋น ์ ธ๋๊ฐ๊ธด ํ์ง๋ง ๋ฃจํ ์คํ์ ๊ณ์๋๋ค.
var num = 0;for (var i = 1; i < 10; i++) { if (i % 5 == 0) { break; } num++;}console.log(num); // 4
var num = 0;for (var i = 1; i < 10; i++) { if (i % 5 == 0) { continue; } num++;}console.log(num); // 8
#
with ๋ฌธwith ๋ฌธ์ ์ฝ๋์ ์ค์ฝํ๋ฅผ ํน์ ๊ฐ์ฒด์ ๊ณ ์ ํ๋ค.
with (expression) statement;
with ๋ฌธ์ ์๋๋ ๋ค์๊ณผ ๊ฐ์ด ํน์ ๊ฐ์ฒด๋ฅผ ์ฝ๋์์ ์์ฃผ ์ฐธ์กฐํ ๋ ํธ๋ฆฌํ๊ฒ ํ๊ธฐ์ํจ์ด๋ค.
var qs = location.search.substring(1);var hostName = location.hostname;var url = location.href;
์ด ์ฝ๋์์ location ๊ฐ์ฒด๋ฅผ ๋งค ํ๋ง๋ค ์ฐธ์กฐํ๋๋ฐ with ๋ฌธ์ ์ฐ๋ฉด ์ ์ฝ๋๋ฅผ ๋ค์๊ณผ๊ฐ์ด ์ค์ผ ์ ์๋ค.
with (location) { var qs = search.substring(1); var hostName = hostname; var url = href;}
with ๋ฌธ ๋ด๋ถ์ ๋ณ์๋ ์ฐ์ ์ง์ญ ๋ณ์๋ก ๊ฐ์ฃผํ๊ณ , ๋ณ์์ ์ ๊ทผํ ๋ ์ง์ญ ๋ณ์์์์๋ณ์๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉด location ๊ฐ์ฒด์ ํ๋กํผํฐ ์ค์์ ํด๋น์ด๋ฆ์ ์ฐพ๋๋ค.
ํ์ง๋ง ์คํธ๋ฆญํธ ๋ชจ๋์์๋ with ๋ฌธ์ ๊ธ์งํ๋ฉฐ ๋ฌธ๋ฒ ์๋ฌ๋ก ๊ฐ์ฃผํ๋ค. ๋ํ with ๋ฌธ์ ์ฑ๋ฅ์ ์ ์ํฅ์ด ์์ผ๋ฉฐ ๋๋ฒ๊ทธํ๊ธฐ๋ ์ด๋ ค์ ๋ฐฐํฌํ ์ต์ข ์ฝ๋์ with ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ง ์๋ค.
#
switch ๋ฌธswitch ๋ฌธ๋ ๋ค๋ฅธ ์ธ์ด์์ ์ฐจ์ฉํ ์ ์ด๋ฌธ์ผ๋ก, ๋ค๋ฅธ ์ธ์ด์ ๋ฌธ๋ฒ๊ณผ ๋น์ทํ๋ค.
switch (expression) { case value: statement; break; case value: statement; break; case value: statement; break; case value: statement; break; default: statement;}
switch ๋ฌธ์ ๊ฐ case๋ 'ํํ์์ด value์ ์ผ์นํ๋ฉด statement๋ฅผ ์คํํ๋ผ'๋ ์๋ฏธ์ด๋ค. break ํค์๋๋ฅผ ์ฐ์ง ์์ผ ๋ค์ case๋ฅผ ๊ณ์ ํ๊ฐํ๋ค. default๋ case ์ค์ value๋ก ํ๊ฐ๋๋ ๊ฒ์ด ์์ ๋ ์คํํ๋ ๋ฌธ์ฅ์ ๊ฐ๋ฆฌํจ๋ค.
switch ๋ฌธ์ ๋ค๋ฅธ ์ธ์ด์์ ์ฐจ์ฉํ๊ธด ํ์ง๋ง ECMAScript๋ง์ ๊ณ ์ ํ ํน์ง์ ๊ฐ๊ณ ์๋๋ฐ, ๋จผ์ ECMAScript์ switch ๋ฌธ์ ๋ชจ๋ ๋ฐ์ดํฐ ํ์ ์์ ๋์ํ๋ฏ๋ก ๋ฌธ์์ด๊ณผ ๊ฐ์ฒด์์๋ ์ฌ์ฉํ ์ ์๋ค. ๋ํ ๊ฐ์ ์์์ผ ํ์๊ฐ ์์ผ๋ฉฐ ๋ณ์๋ ํํ์๋ ์ธ ์ ์๋ค .
switch ('hello world') { case 'hello' + ' world': console.log('Greeting was found.'); break; case 'goodbye': console.log('Closing was found.'); break; default: console.log('Unexpected message was found.');}
์ด ์์ ์์๋ switch ๋ฌธ์ ๋ฌธ์์ด์ ์ผ๋ค. ์ฒซ ๋ฒ์งธ case๋ ๋ฌธ์์ด์ ํฉ์น๋ ํํ์์ธ๋ฐ, ์ด ๊ฒฐ๊ณผ๊ฐ switch ๋ฌธ์ ๋งค๊ฐ๋ณ์์ ์ผ์นํ๋ฏ๋ก "Greeting was found."๊ฐ ํ์๋๋ค .
var num = 25;switch (true) { case num < 0: console.log("Less than 0."); break; case num >= 0 && num <= 10; console.log("Between 0 and 10."); break; case num > 10 && num <= 20; console.log("Between 10 and 20."); break; default: console.log("More than 20.");}
์ด ์ฝ๋์์ num์ switch ๋ฌธ ๋ฐ์์ ์ ์๋์๊ณ , ๊ฐ case ๋ฌธ์ Boolean ๊ฐ์ ๋ฐํํ๋ฏ๋ก switch ๋ฌธ์ ๋งค๊ฐ๋ณ์ true์ ๋น๊ตํ๋ฉด์ ์งํํ๋ค.
#
ํจ์ECMAScript์์ ํจ์๋ function
ํค์๋๋ก ์ ์ํ๋ฉฐ ๊ทธ ๋ค์ ๋งค๊ฐ๋ณ์์ ํจ์ ๋ณธ๋ฌธ์ ์์๋๋ก ์ด๋ค.
function functionName(arg0, arg1, ..., argN) { statements}
ํจ์๋ ํจ์ ์ด๋ฆ์ผ๋ก ํธ์ถํ๋ฉฐ, ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋๊ธธ ๋ ๊ดํธ์์ ๋ฃ๊ณ , ๋งค๊ฐ๋ณ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์ผํ๋ก ๊ตฌ๋ถํ๋ค. ๋ชจ๋ ํจ์๋ return
๋ฌธ ๋ค์ ๋ฐํํ ๊ฐ์ ์จ์ ๊ฐ์ ๋ฐํํ ์ ์๋๋ฐ ๋ชจ๋ ํจ์๊ฐ ๊ผญ ๊ฐ์ ๋ฐํํด์ผ ํ๋ ๊ฒ์ ์๋๋ค. ํจ์๋ return
๋ฌธ์ ๋ง๋๋ฉด ์ฆ์ ์คํ์ ๋ฉ์ถ๊ณ ๋น ์ ธ๋์ค๋ฏ๋ก return
๋ฌธ ๋ค์ ์ฝ๋๋ ์คํ๋์ง ์๋๋ค.
ํจ์ ํ๋์ ์ฌ๋ฌ return
๋ฌธ์ ์ธ ์๋ ์๊ณ , return
๋ฌธ ๋ค์ ๋ฐํ ๊ฐ์ ์ฐ์ง ์์๋ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด undefined
๋ฅผ ๋ฐํํ๋ค.
#
๋งค๊ฐ๋ณ์์ ์ดํดECMAScript ํจ์๋ ๋งค๊ฐ๋ณ์ ์ซ์๋ฅผ ๋ฐ์ง์ง ์์ผ๋ฉฐ ๋ฐ์ดํฐ ํ์
๋ ์ฒดํฌํ์ง ์๋๋ค. ์ฆ ํจ์์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ ๊ฐ ๋ฐ๋๋ก ๋ง๋ค์ด๋ ๋งค๊ฐ๋ณ์๋ฅผ ํ ๊ฐ, ์ธ ๊ฐ ๋๋ ์์๋๊ธฐ์ง ์์๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ์ด๋ ๊ฒ ๋๋ ์ด์ ๋ ๋งค๊ฐ๋ณ์๊ฐ ๋ด๋ถ์ ์ผ๋ก๋ฐฐ์ด์ผ๋ก ํํ๋๊ธฐ ๋๋ฌธ์ด๋ค. ํจ์๋ ๋ฐฐ์ด์ ์ด๋ค ๊ฐ์ด ๋ค์ด์๋์ง ์ฒดํฌํ์ง ์์ผ๋ฏ๋ก๋น๋ฐฐ์ด์ด ๋ค์ด์๋ ์๊ด ์๊ณ ๋ ๋ง์ด ๋ค์ด์๋ ๊ด์ฐฎ๋ค. ํจ์๋ arguments
๋ผ๋ ๊ฐ์ฒด๋ฅผ ํ๋ ๊ฐ๋๋ฐ, ์ด ๊ฐ์ฒด๋ฅผ ํตํด ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๊ทผํ ์ ์๋ค.
arguments[0]
์ผ๋ก ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์ , arguments[1]
๋ก ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ length
ํ๋กํผํฐ๋ฅผ ํตํด ์ ์ ์๋ค. arguments
์ ๋์์ด ๋ฐฐ์ด๊ณผ ์ ์ฌํ์ง๋ง Array
์ ์ธ์คํด์ค๊ฐ ์๋๋ค. (์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด) arguments
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์์ ๋ช
์์ ์ธ ์ด๋ฆ์ ์ ํ์ง ์๊ณ ์ธ ์ ์๋ค.
function sayHi() { console.log('Hello ' + arguments[0] + ',' + arguments[1]);}
arguments
๊ฐ์ฒด์ length
ํ๋กํผํฐ๋ฅผ ํตํด ๋งค๊ฐ๋ณ์๊ฐ ๋ช ๊ฐ ์ ๋ฌ๋์๋์ง ์ ์์๊ณ , ์ด๋ฅผ ํ์ฉํด ๋งค๊ฐ๋ณ์ ๊ฐ์์ ๋ฐ๋ผ ๋ฐ์ํ๋ ํจ์๋ฅผ ๋ง๋ค ์๋ ์๋ค.
function doAdd() { if (arguments.length == 1) { console.log(arguments[0] + 10); } else if (arguments.length == 2) { console.log(arguments[0] + arguments[1]); }}
arguments
๊ฐ์ฒด๋ฅผ ์ด๋ฆ ๋ถ์ ๋งค๊ฐ๋ณ์์ ํจ๊ป ์ธ ์ ์๋๋ฐ, ์ด ๋ arguments[0]
์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๊ฐ์ด๊ณ , arguments[1]
๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๊ฐ์ผ๋ก ๋์ ๋ฐ๊ฟ์ ์ธ ์ ์๋ค. arguments
ํ๋กํผํฐ ๊ฐ์ ๋ฐ๊ฟ ๊ฒฝ์ฐ ์ด์ ๋์ํ๋์ด๋ฆ ๋ถ์ ๋งค๊ฐ๋ณ์์์ ์๋์ผ๋ก ๋ฐ์๋๋ค.
function doAdd(num1, num2) { arguments[1] = 10; console.log(arguments[0] + num2);}
์ด ํจ์๋ ํญ์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ๊ฐ์ 10์ผ๋ก ๋ฐ๊พธ๋๋ฐ ์ด ๋ ์ด๋ฆ ๋ถ์ ๋งค๊ฐ๋ณ์ num2
์ญ์ arguments[1]
์ ๋ฐ๋ผ 10์ด ๋๋ค. ์ด ๋์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐ๋ ๊ฒ์ ์๋๋ค. ๋ํ ์ด๊ฒ์ ๋๊ธฐํ๊ฐ ์๋๋ผ ๋จ๋ฐํฅ ๋ฐ์์ผ๋ก arguments[1]
์ ๊ฐ์ ๋ฐ๊พธ๋ฉด num2
์ ๋ฐ์๋์ง๋ง num2
๋ฅผ ๋ฐ๊พธ๋ฉด arguments[1]
์ ๋ฐ์๋์ง ์๋๋ค.
#
์ค๋ฒ๋ก๋ฉECMAScript ํจ์๋ ๋ค๋ฅธ ์ธ์ด์์ ์ฌ์ฉํ๋ ์ค๋ฒ๋ก๋ฉ์ด ์๋ค. ์๋ฅผ ๋ค์ด Java์์๋ํจ์ ์ด๋ฆ์ด ๊ฐ๋๋ผ๋ ์๊ทธ๋์ฒ(๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ๊ฐ์)๋ง ๋ค๋ฅด๋ฉด ์๋ก ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ์ ์ํ ์ ์๋๋ฐ, JavaScript์์๋ ๋งค๊ฐ๋ณ์๊ฐ ๊ทธ์ ๋ฐฐ์ด์ผ ๋ฟ์ด๋ฉฐ ๊ทธ ๊ฐ์์ ํ์ด ์๊ธฐ ๋๋ฌธ์, ํจ์ ์๊ทธ๋์ฒ๊ฐ ์๋ค.
๋ฐ๋ผ์ ECMAScript์์๋ ๊ฐ์ ์ด๋ฆ์ผ๋ก ํจ์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ์ํ๋ฉด ๋ง์ง๋ง ํจ์๊ฐ ํด๋น์ด๋ฆ์ ์์ ํ๋ค. ๋ฐ๋ผ์ ์ง์ ํ ์๋ฏธ์ ์ค๋ฒ๋ก๋ฉ์ด ๋ถ๊ฐ๋ฅํ๊ณ , ํจ์์ ๋๊ธด ๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ์ซ์๋ฅผ ์ฒดํฌํด์ ๊ทธ์ ๋ง๊ฒ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ฒ๋ก๋ฉ์ ํ๋ด๋ผ ์ ์๋ค.
#
์์ฝ์๋ฐ์คํฌ๋ฆฝํธ์ ํต์ฌ ๊ธฐ๋ฅ์ ECMA-262์์ ECMAScript๋ผ๋ ์ด๋ฆ์ ๊ฐ์ ์ธ์ด๋ก ์ ์ํ๋ค. ECMAScript์๋ ์ ์ถ๋ ฅ์ ์ ์ธํ๊ณ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ๊ณผ ์ฐ์ฐ์, ๋ฐ์ดํฐ ํ์ , ๊ฐ์ฒด๋ฑ์ ์ ์ํ๋ค. ECMAScript์ ๊ธฐ๋ณธ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
ECMAScript์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ Undefined, Null, Boolean, Number, String ์ด๋ค.
ECMAScript๋ ์ ์์ ๋ถ๋์์์ ์ซ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.
ECMAScript๋ C ๋ฐ C์ ๋น์ทํ ์ธ์ด์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ฐ์ฐ์์ธ ์ฐ์ ์ฐ์ฐ์, ๋ ผ๋ฆฌ์ฐ์ฐ์, ๊ด๊ณ ์ฐ์ฐ์, ๋์ผ(์ผ์น) ์ฐ์ฐ์, ํ ๋น ์ฐ์ฐ์ ๋ฑ์ ์ ๊ณตํ๋ค.
JavaScript์ ์ ์ด๋ฌธ์ ๋๊ฐ ๋ค๋ฅธ ์ธ์ด์์ ์ฐจ์ฉํ ๊ฒ์ด๋ฉฐ if ๋ฌธ, for ๋ฌธ, switch ๋ฌธ ๋ฑ์ด ์ด์ ํด๋นํ๋ค.
ECMAScript์ ํจ์๋ ๋ค๋ฅธ ์ธ์ด์ ํจ์์ ๋ค๋ฅด๊ฒ ๋์ํ๋ค.
ํจ์๋ ์ธ์ ๋ ๋ฌด์จ ๊ฐ์ด๋ ๋ฐํํ ์ ์์ผ๋ฏ๋ก ํจ์์ ๋ฐํ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ช ์ํ ํ์๊ฐ ์๋ค.
๊ฐ์ ๋ฐํํ์ง ์๋ ํจ์๋
undefined
๋ฅผ ๋ฐํํ๋ค.ECMAScript์ ํจ์๋ ์๊ทธ๋์ฒ๊ฐ ์๊ณ , ๋งค๊ฐ๋ณ์๊ฐ ์ฌ์ค ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด์ด๋ฉฐ ์ด๋ค๊ฐ์ด๋ ๊ฐ์ง ์ ์๋ค.
ํจ์์ ๋๊ธฐ๋ ๋งค๊ฐ๋ณ์ ์ซ์์๋ ์ ํ์ด ์์ผ๋ฉฐ
arguments
๊ฐ์ฒด๋ฅผ ํตํด ์ ๊ทผํ ์์๋ค.ํจ์ ์๊ทธ๋์ฒ๊ฐ ์๊ธฐ ๋๋ฌธ์ ECMAScript์ ํจ์๋ ์ค๋ฒ๋ก๋ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋งค๊ฐ๋ณ์์ ์ข ๋ฅ์ ํ์ ์ ๋ฐ๋ผ ๋ฌ๋ฆฌ ๋์ํ๋๋ก ์ ์ํด์ ์ค๋ฒ๋ก๋ฉ์ ํ๋ด๋ผ ์๋ ์๋ค.
#
์ฐธ๊ณ ์๋ฃ๐ ์๋ฐ์คํฌ๋ฆฝํธ, ์ธ๋ฏธ์ฝ๋ก ์ ์จ์ผ ํ๋ ๋ง์์ผ ํ๋ | ๋ฐ์ฐ์ค
๐ JavaScript Reserved Words
๐ Symbol | PoiemaWeb
๐ typeof
๐ FEDevelopers/tech.description
๐ Type Checking | PoiemaWeb
๐ ๋ ผ๋ฆฌ ์ฐ์ฐ์