ํจ์ ์ ์ธ๋ฌธ ํ์์ผ๋ก ์์ฑํ๋ฉด ํธ์ด์คํ ์ผ๋ก ์ธํด ํธ์ถ์ ๋จผ์ ํด๋ ์ฝ๋๊ฐ ๋์ํ๋ค.
ํจ์ ์ ์ธ๋ฌธ ํ์์ ํจ์ ์ค์ฝํ๋ฅผ ๊ฐ์ ธ์ ์ ์ญ์ hello
ํจ์๊ฐ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์์ด ์คํ๋๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์๋ ์์ ๋ฅผ ๋ณด์.
๐ ์์ ์ฝ๋
// 1
{
c();
function c() {
console.log("block");
}
}
// 2
{
function c() {
console.log("block");
}
}
c();
// 3
c();
{
function c() {
console.log("block");
}
}
1๋ฒ๊ณผ 2๋ฒ ์ฝ๋๋ ์๋ฌ ์์ด ๋์ํ๋ค.
ํ์ง๋ง 3๋ฒ ์ฝ๋๋ TypeError
๊ฐ ๋ฐ์ํ๋ค. ์ ๊ทธ๋ด๊น?
๐ ์์ ๋ณ ๋์ ์๋ฆฌ
โ ์์ 1
{
c();
function c() {
console.log("block");
}
}
๋ธ๋ก ์์์ c
๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์
๋ธ๋ก ๋ด๋ถ ํจ์ ์ ์ธ์ด ๋ธ๋ก ์ค์ฝํ ์์์ ํธ์ด์คํ ๋์ด ์ ์์ ์ผ๋ก ์คํ๋๋ค.
โ ์์ 2
{
function c() {
console.log("block");
}
}
c();
ํจ์ ์ ์ธ์ด ๋ธ๋ก ์์ ์๊ณ , ํธ์ถ์ ๋ธ๋ก ๋ฐ๊นฅ์์ ์ผ์ด๋๋ค.
๋ธ๋ก ๋ด๋ถ์ ์ ์ธ๋ ํจ์๋ฅผ ์ ์ญ์ ๋ฑ๋กํ๊ธฐ ๋๋ฌธ์ c()
๊ฐ ๋์ํ๋ค.
* ์๊ฒฉ ๋ชจ๋๋ ๋ชจ๋ ํ๊ฒฝ์์๋ ์๋ฌ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ฃผ์ํ ๊ฒ
โ ์์ 3 (TypeError ๋ฐ์)
c();
{
function c() {
console.log("block");
}
}
ํจ์ ํธ์ถ์ด ๋จผ์ ๋์ค๊ณ , ๋ธ๋ก ์์์ ํจ์ ์ ์ธ์ด ์ด๋ค์ง๋ค.
ํธ์ด์คํ
๊ณผ์ ์์ c
๋ผ๋ ์๋ณ์๋ ๋ง์น var c
์ฒ๋ผ ๋ฏธ๋ฆฌ ์ ์ธ๋๋ค.
ํธ์ถ ์์ ์ c
๋ ์ด๋ฏธ ์กด์ฌํ์ง๋ง ๊ฐ์ undefined
์ํ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด ์ฝ๋๋ฅผ ์๋ ์ฝ๋์ฒ๋ผ ์ฒ๋ฆฌํ๋ค.
var c;
c(); // undefined() -> TypeError ๋ฐ์
{
function c() {
console.log('block');
}
}
์์ 3์์๋ ํธ์ด์คํ
์ด ์ผ์ด๋์ง๋ง ๊ฐ์ด undefined
์ธ ์ํ์ฌ์
ํธ์ถ ์ TypeError: c is not a function
๊ฐ ๋ฐ์ํ๋ค.
๐ ์ฐธ๊ณ
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/function
ํจ์ ์ ์ธ - JavaScript | MDN
ํจ์ ์ ์ธ์ผ๋ก ์์ฑ๋ ํจ์๋ Function ๊ฐ์ฒด๋ก, Function ๊ฐ์ฒด์ ๋ชจ๋ ์์ฑ(property), ๋ฉ์๋ ๋ฐ ํ์ ํน์ฑ(behavior)์ ๊ฐ์ต๋๋ค. ํจ์์ ๊ดํ ๋ ์์ธํ ์ ๋ณด๋ Function ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ํจ์๋ ๋ํ
developer.mozilla.org
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/block
block - JavaScript | MDN
๋ค๋ฅธ ์ธ์ด์์ ๋ธ๋ก๋ฌธ์ ๋ณตํฉ๋ฌธ์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค. ๋ธ๋ก๋ฌธ์ ์ฐ๋ฉด JavaScript๊ฐ ํ๋์ ๋ฌธ์ ๊ธฐ๋ํ๋ ๊ณณ์์ ๋ค์์ ๋ฌธ์ ์คํํ ์ ์์ต๋๋ค. JavaScript์์ ์ด๋ ๊ฒ ๋ฌธ์ ๋ฌถ๋๊ฑด ํํ ์ฐ์ด๋
developer.mozilla.org