JS 함수 향상 & 변수 향상 및 함수 성명 & 함수 표현 식 의 차이

10144 단어 Javascript
원문 작성 자 에 게 감 사 드 립 니 다: 조만간 고양이 원문 링크 가 있 을 것 입 니 다.https://www.cnblogs.com/SidselLoong/p/10515809.html
오늘 은 js 의 변수 향상 문 제 를 보고 함수 향상 을 언급 했다.그리고 자신 이 함수 성명 과 함수 표현 식 을 잘못 알 고 함수 향상 에 오류 가 생 겼 다 는 것 을 알 게 되 었 습 니 다.
변수 향상
console.log(a)
var a=100 //undefined
console.log(a)//100

승급 후
var a; //    ,        ,      ,     
console.log(a); //undefined
a=100 //    
console.log(a) //100

함수 향상
메모: js 에서 함 수 를 만 드 는 방법 은 두 가지 가 있 습 니 다. 함수 성명 과 함수 표현 식 입 니 다.함수 만 함수 승급 가능!!!(함수 성명 과 함수 표현 식 을 구분 하지 못 했 기 때문에 함수 향상 에 자주 오류 가 발생 합 니 다 = =)
먼저 함수 성명 과 함수 표현 식 을 간단하게 인식 합 니 다.
//    
  function fn1(){
    console.log(12)
  }
  //     
  var fn2 = function () {
    console.log(222)
  }
f1() //123
f2() //error:f2 is not a function
//     
function f1() { 
  console.log(123)
}
//      
var f2 = function() {
  console.log(222)
}

승급 후
//     -----  
function f1() { 
  console.log(123)
}
var f2;
f1() //123
f2() //error:f2 is not a function
//      
f2 = function() {
  console.log(222)
}

2.1 함수 향상
fn('zhangsan') //zhangsan 20
  function fn(name) {
    age = 20
    console.log(name,age)
    var age
  }

승급 후
function fn(name) {
    var age; //    ,  age
    age=20; //    
    console.log(name,age)
  }
  fn('zhangsan')

2.2 함수 식
 fn1('lisi')//fn1 is not a function
  var fn1=function (name){
    age = 20
    console.log(name,age)
    var age
  }

효과 향상
var fn1;
  fn1('lisi')//fn1 is not a function
  fn1=function (name){
    var age;
    age = 20
    console.log(name,age)
  }

나의 이해
변수 향상: 현재 scope 의 맨 위 에 변수 성명 을 올 리 고 할당 문 구 는 제자리 에 있 습 니 다!그래서 할당 문 앞에서 호출 하면 4. 567914 가 나타 납 니 다.함수 향상: 두 가지 로 나 뉘 는데 하 나 는 순 함수 향상 이 고 하 나 는 함수 표현 식 향상 입 니 다. 함수 표현 식 은 실질 적 으로 변수 향상 입 니 다. 또한 함수 향상 의 우선 순위 가 변수 보다 높 습 니 다!
별도로 열람 하 다https://www.runoob.com/js/js-hoisting.html
https://www.cnblogs.com/liuhe688/p/5891273.html https://www.cnblogs.com/damonlan/archive/2012/07/01/2553425.html https://zhuanlan.zhihu.com/p/43607950

좋은 웹페이지 즐겨찾기