JABASCRIPT BASIC

๋ณ€์ˆ˜

scope

function test(){
  var message = "hi"; // ์ง€์—ญ๋ณ€์ˆ˜
}
test();
alert(message); // ์˜ค๋ฅ˜ ๋ฐœ์ƒ
VM3067:5 Uncaught ReferenceError: message is not defined
    at <anonymous>:5:7

var ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜๋ฅผ ๋กœ์ปฌ ์Šค์ฝ”ํ”„์—์„œ ์ •์˜ํ•œ๋‹ค๋Š” ์ ์„ ๋ฐ˜๋“œ์‹œ ๊ธฐ์–ตํ•ด์•ผํ•œ๋‹ค. var ํ‚ค์›Œ๋“œ๋ฅผ ์จ์„œ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ์œ„์™€ ๊ฐ™์ด ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์ˆœ๊ฐ„ ํŒŒ๊ดด๋œ๋‹ค.

function test(){
  message = "hi"; // ์ „์—ญ๋ณ€์ˆ˜
}
test();
alert(message);    //"hi"

var ์—ฐ์‚ฐ์ž๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž… ECMAScript์—๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์žˆ๋‹ค. ์ด๋ฅผ primitive(์›์‹œ) ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋ผ ๋ถ€๋ฅด๊ธฐ๋„ํ•œ๋‹ค.

  • Undefined

  • Null

  • Boolean

  • number

  • string

๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…

  • object : ํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ๊ฐ์ฒด or null

  • function : ํ•จ์ˆ˜

์œ„์˜ ๋‹ค์„ฏ ๊ฐ€์ง€๊ฐ€ ์ด์— ํ•ด๋‹น๋œ๋‹ค.

undefined

undefined ๋Š” var ๋ฅผ ์จ์„œ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ–ˆ์ง€๋งŒ ์ดˆ๊ธฐํ™” ํ•˜์ง€์•Š์€ ๊ฒฝ์šฐ์ด๋‹ค.

var message;
console.log(message); //=> undefined

๊ธฐ๋ณธ์ ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์—๋Š” ํ•ญ์ƒ undefined๊ฐ€ ํ• ๋‹น๋œ๋‹ค.

var message; // undefined

console.log(message); // "undefined"
console.log(age);            // ์˜ค๋ฅ˜
Uncaught ReferenceError: age is not defined
    at <anonymous>:1:13

undefined ๊ฐ’์ด ํ• ๋‹น๋œ ๋ณ€์ˆ˜์™€ ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. ์•„์ง ์ •์˜ํ•œ ์  ์—†๋Š” ๋ณ€์ˆ˜์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ์ ์€ typeof๋ฟ์ด๋‹ค.

var message; 
typeof message
"undefined"
typeof age; // "undefined"

Null

Null ํƒ€์ž… ์—ญ์‹œ ๊ฐ’ ํ•˜๋‚˜๋งŒ์„ ๊ฐ–๋Š”๋‹ค. null ์€ ๋นˆ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ด๋ฏ€๋กœ typeof ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด object๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

var a = null;
typeof(a); // "object"

๋ณ€์ˆ˜ ์ •์˜์‹œ์— ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•  ๊ฒƒ์ด๋ผ๋ฉด null๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

console.log(null == undefined) // true

undefined๋Š” null์—์„œ ํŒŒ์ƒํ–ˆ์œผ๋ฏ€๋กœ ํ‘œ๋ฉด์ ์œผ๋กœ ๋™์ผํ•œ ๊ฒƒ์œผ๋กœ ์ •์˜ํ•œ๋‹ค. null๊ณผ undefined๋Š” ์„œ๋กœ ๊ด€๋ จ์žˆ์ง€๋งŒ ๋‘ ๊ฐ’์€ ์•„์ฃผ ๋‹ค๋ฅด๊ฒŒ ์“ฐ์ธ๋‹ค. ๋ณ€์ˆ˜๊ฐ’์— ๋ช…์‹œ์ ์œผ๋กœ undefined๋ฅผ ํ• ๋‹นํ•ด์„œ๋Š” ์•ˆ๋˜์ง€๋งŒ, null์€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜์ง€๋งŒ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์—†์„ ๋•Œ ํ•ญ์ƒ null์ด ์™€์•ผํ•œ๋‹ค.

boolean

๋ฐ์ดํ„ฐ ํƒ€์ž…

true

false

boolean

true

false

string

๋น„์–ด์žˆ์ง€์•Š์€ ๋ฌธ์ž์—ด ์ „๋ถ€

""(๋นˆ ๋ฌธ์ž์—ด)

number

0์ด ์•„๋‹Œ ๋ชจ๋“  ์ˆซ์ž, ๋ฌดํ•œ๋Œ€(Infinity) ํฌํ•จ

0, NaN

object

๋ชจ๋“  ๊ฐ์ฒด

null

undefined

X(ํ•ด๋‹น์—†์Œ)

undefined

number

๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋Š” ์†Œ์ˆ˜์  ์•„๋ž˜ 17์ž๋ฆฌ๊นŒ์ง€ ์ •ํ™•ํ•˜์ง€๋งŒ ์‚ฌ์น™์—ฐ์‚ฐ์— ์žˆ์–ด์„œ๋Š” ๋ถ€์ •ํ™•ํ•˜๋‹ค.

a = 0.1
b = 0.2
a+b // 0.30000000000000004
console.log(a+b == 0.3) //=> false

0.1 + 0.2๊ฐ€ 0.3์ด ์•„๋‹Œ 0.30000000000000004๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๋น„๊ตํ• ๋•Œ๋Š” ์ด๋Ÿฌํ•œ ๋ฒ„๊ทธ๋ฅผ ์ธ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์จ์•ผํ•œ๋‹ค.

Number.MIN_VALUE // 5e-324
Number.MAX_VALUE // 1.7976931348623157e+308
isFinite(123124124123123) // true
isFinite(Infinity)        // false

์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์€ MIN_VALUE, MAX_VALUE๋ฅผ ํ†ตํ•ด์„œ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์œ ํšจํ•œ ๋ฒ”์œ„์•ˆ์— ์žˆ๋Š”์ง€๋Š” isFinite() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.

NaN

NaN์€ Not a Number์œผ๋กœ ์˜๋„ํ•œ ์กฐ์ž‘์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์ด๋‹ค. NaN์€ ์–ด๋– ํ•œ ๊ฐ’๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, NaN๋ผ๋ฆฌ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

console.log(NaN == NaN); // false

๊ทธ๋Ÿฌ๋ฏ€๋กœ, isNaN() ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ œ๊ณตํ•ด์ค€๋‹ค.

์›์‹œ ๊ฐ’๊ณผ ์ฐธ์กฐ ๊ฐ’

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ ธ์•ผํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•œ ๊ทœ์น™์ด ์—†์œผ๋ฏ€๋กœ ๋ณ€์ˆ˜์˜ ๊ฐ’๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์‹คํ–‰ ์ค‘์— ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

์›์‹œ ๊ฐ’์€ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ์ด๋ฉฐ, ์ฐธ์กฐ ๊ฐ’์€ ์—ฌ๋Ÿฌ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ•ด๋‹น ๊ฐ’์ด ์›์‹œ ๋ฐ์ดํ„ฐ์ธ์ง€ ์ฐธ์กฐ ๋ฐ์ดํ„ฐ์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค.

์›์‹œํƒ€์ž…์€ Undefined, Null, Boolean, ์ˆซ์ž, ๋ฌธ์ž์—ด์ด๋‹ค. ์ฐธ์กฐ ๊ฐ’์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๊ฐ์ฒด๋กœ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์กฐ์ž‘ํ• ๋•Œ๋Š” ์‚ฌ์‹ค ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋™์  ํ”„๋กœํผํ‹ฐ

์ฐธ์กฐ ๊ฐ’์„ ๋‹ค๋ฃฐ๋•Œ๋Š” ์–ธ์ œ๋“  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ฐ”๊พธ๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

var person = new Object();
person.name = "Faker";
console.log(person.name); // "Faker"

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ์ด ์‹œ์ ๋ถ€ํ„ฐ ๊ฐ์ฒด๊ฐ€ ํŒŒ๊ดด๋˜๊ฑฐ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

var name = "Faker";
name.age = 24;
console.log(name.age); // undefined

์›์‹œ๊ฐ’์—๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†์œผ๋ฉฐ, ์ถ”๊ฐ€ํ•˜๋ คํ•ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ฐ”๋กœ ์‚ฌ๋ผ์ง„๋‹ค. ๋™์ ์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ์ฐธ์กฐ๊ฐ’ ๋ฟ์ด๋‹ค.

๊ฐ’ ๋ณต์‚ฌ

์›์‹œ ๊ฐ’์„ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋กœ ๋ณต์‚ฌํ•  ๋•Œ๋Š” ํ˜„์žฌ ์ €์žฅ๋œ ๊ฐ’์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋‹ค์Œ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ๋ณต์‚ฌํ•œ๋‹ค.

var num1 = 4;
var num2 = num1;

console.log(num1 , num2); // 4 4
num1 = 5;
console.log(num1 , num2); // 5 4

์—ฌ๊ธฐ์„œ ๋ณต์‚ฌ๋œ ๊ฐ’ num2๋Š” num1์— ์ €์žฅ๋œ ๊ฐ’๊ณผ๋Š” ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ์กฐ ๊ฐ’์€ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ๊ทธ ๊ฐ’์ด ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํž™์— ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ด๋‹ค.

var obj = Object();
var obj2 = obj;

obj.name = "Faker";
console.log(obj2.name);
obj2.name = "Clid";
console.log(obj.name);

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ์ฒด๋ฅผ ์กฐ์ž‘ํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด์—๋„ ์˜ํ–ฅ์ด ๊ฐ€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜

ECMAScript์˜ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. ํ•จ์ˆ˜ ์™ธ๋ถ€์— ์žˆ๋Š” ๊ฐ’์€ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ณต์‚ฌ๋˜๋Š”๋ฐ, ์ด๋•Œ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๋ณ€์ˆ˜๋Š” ๊ฐ’์œผ๋กœ๋„, ์ฐธ์กฐ๋กœ๋„ ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์˜ค์ง ๊ฐ’์œผ๋กœ๋งŒ ์ „๋‹ฌ๋œ๋‹ค.

function addTen(num){
  // ์—ฌ๊ธฐ์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ num์€ ์ง€์—ญ๋ณ€์ˆ˜์ด๋‹ค.
  num += 10;
  return num;
}

var count = 20;
var result = addTen(count);
console.log(count); // 20
console.log(result); // 30
function setName(obj){
  obj.name = "Faker";
}
var person = new Object();
setName(person);
console.log(person);
[object Object] {
  name: "Faker"
}

obj๋Š” ํ•จ์ˆ˜์— ๊ฐ’ ํ˜•ํƒœ๋กœ ์ „๋‹ฌ๋˜์—ˆ์ง€๋งŒ, ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ์ฒด์— ์ ‘๊ทผํ•œ๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ obj์— name ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ๋„ ๋ฐ˜์˜๋˜๋Š”๋ฐ obj๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์€ ํž™์— ์กด์žฌํ•˜๋Š” ์ „์—ญ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

function setName2(obj){
  obj.name = "Faker";
  obj = new Object();
  obj.name = "Greg";
}

var person2 = new Object();
setName2(person2);
console.log(person2);
[object Object] {
  name: "Faker"
}

๋งŒ์•ฝ person2๊ฐ€ ์ฐธ์กฐ๋กœ ์ „๋‹ฌ๋˜์—ˆ๋‹ค๋ฉด, person2์˜ name ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ Grag๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผํ•˜์ง€๋งŒ "Faker"๊ทธ๋Œ€๋กœ์ด๋‹ค. ํ•จ์ˆ˜์— ๊ฐ’์„ ์ „๋‹ฌํ–ˆ๊ธฐ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์›๋ž˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ ๊ฒƒ์ด๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, obj๋Š” ์ง€์—ญ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๋˜๋ฉฐ, ์ด ์ง€์—ญ ๊ฐ์ฒด๋Š” ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰์„ ๋งˆ์น˜๋Š” ์ˆœ๊ฐ„ ์ฆ‰์‹œ ํŒŒ๊ดด๋œ๋‹ค.

ํƒ€์ž… ํŒ๋ณ„

typeof ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜๊ฐ€ ์›์‹œ ํƒ€์ž…์ธ์ง€ ํŒŒ์•…ํ•˜๊ธฐ์— ์ตœ์ƒ์ด์ง€๋งŒ, ์ฐธ์กฐ๊ฐ’์— ๋Œ€ํ•ด์„œ๋Š” ํŒ๋ณ„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— instanceof ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.

variable instanceof constructor
console.log(person instanceof Object); // true

๋ชจ๋“  ์ฐธ์กฐ ๊ฐ’์€ Object์˜ ์ธ์Šคํ„ด์Šค์ธ ๊ฒƒ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ•ญ์ƒ true๋ฅผ ๋ฐ˜ํ•œํ™˜๋‹ค.

์—ฐ์‚ฐ์ž

์ผ์น˜/๋ถˆ์ผ์น˜ vs ๋™์ผ/๋น„๋™์ผ ์—ฐ์‚ฐ์ž

๋™์ผ(==)/๋น„๋™์ผ(!=) ์—ฐ์‚ฐ์ž์™€ ์ผ์น˜(===)/๋ถˆ์ผ์น˜(!==) ์—ฐ์‚ฐ์ž๋Š” ๊ฐ™์€ ์ผ์„ํ•˜์ง€๋งŒ ์ผ์น˜, ๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋น„๊ตํ•œ๋‹ค.

console.log("55"==55); // true
console.log("55"===55); // false

๋™์ผ ์—ฐ์‚ฐ์ž(==)๋Š” ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ๋น„๊ต๋ฅผ ํ•˜๋ฏ€๋กœ ๋‘ ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๊ณ  ๋ณธ๋‹ค. ํ•˜์ง€๋งŒ ์ผ์น˜ ์—ฐ์‚ฐ์ž(===)๋Š” ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋น„๊ตํ•˜๋ฏ€๋กœ ์ผ์น˜ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.

console.log(undefined == null); // true
console.log(undefined === null); // false

ํ•จ์ˆ˜

ECMAScript ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆซ์ž๋ฅผ ๋”ฐ์ง€์ง€ ์•Š์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ์ฒดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•จ์ˆ˜์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‘ ๊ฐœ ๋ฐ›๋„๋ก ๋งŒ๋“ค์—ˆ๋”๋ผ๋„ ๋ฐ˜๋“œ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ๋„˜๊ฒจ์•ผํ•˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ECMAScript์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋ฐฐ์—ด๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๋ฐฐ์—ด์€ ํ•ญ์ƒ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜์ง€๋งŒ ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์— ์–ด๋–ค ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š”์ง€ ์ฒดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•จ์ˆ˜๋Š” arguments๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

function sayHi(){
  console.log(arguments);
}
sayHi('test1','1234', '25');
[object Arguments] {
  0: "test1",
  1: "1234",
  2: "25"
}

arguments๋Š” ์ธ๋ฑ์Šค ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

ECMAScript ํ•จ์ˆ˜์—๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ์ด ์—†๋‹ค.๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ •์˜ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ํ•จ์ˆ˜๊ฐ€ ํ• ๋‹น๋œ๋‹ค.

Last updated