js 함수 성명 향상 과 변수 성명 향상

1844 단어 JS
1. 함수 성명 향상
func()
function func () {
}

상례 에서 오 류 를 보고 하지 않 을 것 입 니 다. 바로 '함수 성명 향상' 때 문 입 니 다. 함수 성명 향상 (전체) 을 역할 영역 상단 (함수 성명, 함수 표현 식 포함 하지 않 음) 으로 가 려 고 합 니 다. 실제 향상 후 결 과 는 다음 과 같 습 니 다.
//       
function func () {
}
func()

2. 변수 성명 향상 (var 성명 의 변수 만 변수 가 향상 되 고 let, const 가 없 으 며 변수 할당 이 향상 되 지 않 음)
1. console.log(num)
   var num = 10

2. console.log(func)
   var func = function () {
   }

위의 두 예 는 모두 'undefined' 를 인쇄 합 니 다. 변수 성명 이 올 라 가면 변수 성명 을 역할 영역 상단 으로 올 리 지만 성명 부분 만 올 리 고 할당 부분 은 올 리 지 않 습 니 다. 실제 올 라 간 결 과 는 다음 과 같 습 니 다.
1. var num 
   console.log(num)
   num = 10

2. var func
   console.log(func)
   func = function () {
   }

3. 진급 예시 (양자 우선 순위, 국부 와 전역 변수):
var func = 10
console.log(func && typeof(func))
function func () {
}

-----

console.log(func && typeof(func))
function func () {
}
var func = 10

위의 두 예 는 각각 'number', 'function' 을 출력 할 것 이다. 그 이 유 는? 함수 성명 향상 은 변수 향상 보다 우선 합 니 다. 함수 성명 은 변수 할당 에 영향 을 받 지만 변수 성명 에 영향 을 받 지 않 습 니 다. 실제 향상 후 결 과 는 다음 과 같 습 니 다.
function func () {
}
var func = 10
console.log(func && typeof(func))

-----

function func () {
}
var func
console.log(func && typeof(func))
func = 10

    ②
num = 10
function func () {
    window.num = 5
    console.log(num)
    var num
    console.log(window.num)
}
func()

상례 에서 각각 'undefined', '5' 를 출력 할 것 입 니 다. 첫 번 째 부분 은 국부 변수 이 고 두 번 째 부분 은 전역 변수 입 니 다. 실제 향상 후 결 과 는 다음 과 같 습 니 다.
function func () {
    var num
    window.num = 5
    console.log(num)
    console.log(window.num)
}
var num
num = 10
func()

 
어서 오 세 요.

좋은 웹페이지 즐겨찾기