๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Work/Web

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ๋…ธ๋‹ต ๋””์ž์ด๋„ˆ์˜ ์ฝ”๋”ฉ ๋ฐฐ์šฐ๊ธฐ - TypeError

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ TypeError๋ž€?

 

์ด์ œ TypeError์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆด๊ฒŒ์š”.

 

TypeError๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ์ค‘ ํ•˜๋‚˜๋กœ, ๋ณ€์ˆ˜๋‚˜ ๊ฐ’์ด ์˜ˆ์ƒ๋œ ์ž๋ฃŒํ˜•(ํƒ€์ž…)๊ณผ ๋งž์ง€ ์•Š๊ฑฐ๋‚˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

 

TypeError๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒํ™ฉ:

1. ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ์„ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•  ๋•Œ:

์˜ˆ: null์ด๋‚˜ undefined ๊ฐ’์„ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

let func = null;
func();  // TypeError: func is not a function

 

2. ๊ฐ์ฒด ์†์„ฑ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ๊ทธ ๊ฐ’์ด undefined์ผ ๋•Œ:

์˜ˆ: ๊ฐ์ฒด๊ฐ€ ์—†๊ฑฐ๋‚˜ ์ •์˜๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

let obj;
console.log(obj.name);  // TypeError: Cannot read property 'name' of undefined

 

3. ํŠน์ • ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ทธ ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ:

์˜ˆ: ๋ฐฐ์—ด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ์ฒด์—์„œ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let obj = {};
obj.push(1);  // TypeError: obj.push is not a function

 

์ •๋ฆฌํ•˜์ž๋ฉด:

 

TypeError๋Š” ๊ฐ’์ด ์˜ˆ์ƒ๋œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜, ๊ทธ ํƒ€์ž…์— ๋งž๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, null ๊ฐ’์— ๋Œ€ํ•ด ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— **“ํƒ€์ž…์ด ๋งž์ง€ ์•Š๋‹ค(TypeError)”**๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฑฐ์ฃ .