ReferenceError: "x" is not defined

๋ฉ”์‹œ์ง€

ReferenceError: "x" is not defined

์—๋Ÿฌ ํƒ€์ž…

ReferenceError.

๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ์„๊นŒ?

์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ณณ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š”, ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ๋‚˜ scope ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Note: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ๋ฅผ ๋“ค๋ฉด jQuery์™€ ๊ฐ™์€)์˜ ๋กœ๋”ฉ์€, ๋ฐ˜๋“œ์‹œ ์ฝ”๋“œ์—์„œ  "$"์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ธฐ ์ด์ „์— ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋”ฉํ•˜๋Š” <script> ํƒœ๊ทธ๊ฐ€ ๊ทธ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ณด๋‹ค ์•ž์— ์œ„์น˜ํ•˜๋„๋ก ํ•˜์„ธ์š”.

์˜ˆ

์„ ์–ธ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜

foo.substring(1); // ReferenceError: foo is not defined

"foo" ๋ณ€์ˆ˜๋Š” ์–ด๋””์—๋„ ์„ ์–ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. String.prototype.substring() ๋ฉ”์†Œ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌธ์ž์—ด์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

var foo = "bar";
foo.substring(1); // "ar"

์ž˜๋ชป๋œ ์Šค์ฝ”ํ”„

๋ณ€์ˆ˜๋Š” ํ˜„์žฌ์˜ ์‹คํ–‰ ํ๋ฆ„ ๋‚ด์—์„œ ์ด์šฉ ๊ฐ€๋Šฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์ •์˜๋œ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ์™ธ๋ถ€์˜ ํ•จ์ˆ˜์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ๋•Œ๋ฌธ์—, ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„ ๋‚ด๋ถ€์—์„œ๋งŒ ์ •์˜ ๋ฉ๋‹ˆ๋‹ค.

function numbers () {
  var num1 = 2,
      num2 = 3;
  return num1 + num2;
}

console.log(num1); // ReferenceError: num1 is not defined

๊ทธ๋Ÿฌ๋‚˜, ํ•จ์ˆ˜๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜์™€ ์ •์˜๋œ ์Šค์ฝ”ํ”„ ์•ˆ์— ์ •์˜๋œ ํ•จ์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ „์—ญ์œผ๋กœ ์ •์˜๋œ ํ•จ์ˆ˜๋Š” ์ „์—ญ์— ์ •์˜๋œ ๋ชจ๋“  ๋ณ€์ˆ˜์—๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var num1 = 2,
    num2 = 3;

function numbers () {
  return num1 + num2;
}

console.log(num1); // 2

์ฐธ์กฐ