Skip to content

Latest commit

ย 

History

History
79 lines (62 loc) ยท 1.67 KB

ch13-ํ•ด์„ค.md

File metadata and controls

79 lines (62 loc) ยท 1.67 KB

Chapter13 ์Šค์ฝ”ํ”„

๐Ÿ“Œ๋ฌธ์ œ1

๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ๋ฉˆ์ถ”๋Š” ์ง€ ์•ˆ ๋ฉˆ์ถ”๋Š” ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ๊ทธ์— ๋Œ€ํ•œ ์ด์œ ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.

var a = 10;

function func1() {
  if (a === 30) return;
  console.log(a);
  var a = 20;
  func2();
}

var func2 = function() {
  console.log(a);
  a = a + 10;
  func1();
}
func1();

์ •๋‹ต ๋ฐ ํ•ด์„ค

๋ฉˆ์ถ”์ง€ ์•Š๋Š”๋‹ค.
์™œ๋ƒํ•˜๋ฉด ๋ฉˆ์ถ”๋Š” ์ฝ”๋“œ(func1ํ•จ์ˆ˜์˜ ์กฐ๊ฑด๋ฌธ)์—์„œ a๊ฐ’์€ ํ•ญ์ƒ undefined์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋”ฐ๋ผ์„œ func1ํ•จ์ˆ˜์—์„œ ์ถœ๋ ฅ์€ undefined์ด๊ณ , func2ํ•จ์ˆ˜์—์„œ ์ถœ๋ ฅ์€ 10, 20, 30, .. ์ด๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ2

๋™์ผํ•œ ์Šค์ฝ”ํ”„๋‚ด์—์„œ var vs let ,const๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์˜ ์ฐจ์ด์ ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

๋‹ต์•ˆ ์ž‘์„ฑ

//varํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์ค‘๋ณต ์„ ์–ธ์„ ํ—ˆ์šฉํ•œ๋‹ค.
var x = 2;
var x = 3; // ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์˜ํ•ด x = 3๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.
//let,constํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์ค‘๋ณต์„ ์–ธ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
let x = 1;
let x = 3; // SyntaxError: Identifier 'x' has already been declared

๐Ÿ“Œ๋ฌธ์ œ3

๋‹ค์Œ ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์‹œ์˜ค

var x = 1;
function foo(){
	var y = 10;
	bar();
}

function bar(){
	console.log(x);
  console.log(y);
}

foo();

์ •๋‹ต ๋ฐ ํ•ด์„ค

1
ReferenceError: y is not defined
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ •์  ์Šค์ฝ”ํ”„ / ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„ ๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ์ด ์•„๋‹Œ ์„ ์–ธ์— ๋”ฐ๋ผ 
ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. foo ํ•จ์ˆ˜๋Š” ์ „์—ญ์— ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์—ญ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋กœ ๊ฐ€์ง„๋‹ค.
์ „์—ญ ์Šค์ฝ”ํ”„์— y๊ฐ€ ์„ ์–ธ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.