真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

js變量提升和函數(shù)提升

變量,作為編程語言最基礎(chǔ)的部分,每種語言的變量不盡相同,但又大徑相庭。大部分編程語言的變量有塊級作用域,如if、for、while... 但JavaScript不純在塊級作用域,而是函數(shù)作用域,并且有自己獨有的特性--變量提升。(ES6新添加的let、const使其可以用塊級作用域)

創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè),為客戶提供網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗,各類網(wǎng)站都可以開發(fā),成都品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計,建網(wǎng)站費用,建網(wǎng)站多少錢,價格優(yōu)惠,收費合理。

 對于函數(shù)的變量訪問時遵循作用域鏈的,即當(dāng)前函數(shù)運行時會有一個當(dāng)前作用域,當(dāng)飲用某個變量時,會先查找當(dāng)前作用域內(nèi)是否存在該變量的定義,如果不存在則根據(jù)作用域鏈向上去查找父函數(shù)的作用域,有則拿來使用,沒有則繼續(xù)向上直到全局作用域。關(guān)于作用域鏈這里就不仔細描述,簡單而言,類似原型鏈,從全局函數(shù)直到當(dāng)前函數(shù)的作用域存在一種相互包含的關(guān)系,子可以向上訪問,但是父不可以向下訪問子函數(shù)的變量,這樣層層嵌套的關(guān)系鏈。

作用鏈域如下:

js變量提升和函數(shù)提升

var num = 10;

  function a (){
    console.log(num);
  }

  a() ;   //結(jié)果alert(10),a函數(shù)作用域里沒有num 所以向上查找外層的作用域,有且等于10所以彈出10而不是undefined.

js變量提升和函數(shù)提升

 

變量的提升:

js變量提升和函數(shù)提升

var num = 10;

  function a (){
       //var num;    console.log(num);
    var num = 11; //num = 11;  }

     a();    // undefined

js變量提升和函數(shù)提升

這段代碼中,function a(){}里的var num = 11;就拆分等價于被注釋掉的藍色部分,這就是變量提升--所有的變量都事先被提升到所屬函數(shù)作用域的頭部聲明。

 

再來看看有關(guān)函數(shù)形參的問題,第一段代碼稍加改動:

js變量提升和函數(shù)提升

var num = 10;

  function a (num){
    console.log(num);  
  }   a() ;   //結(jié)果undefined,a函數(shù)作用域定義形參num,由于沒賦值,所以為undefined

js變量提升和函數(shù)提升

 

函數(shù)的提升:

函數(shù)的聲明方式有倆種:函數(shù)聲明和函數(shù)表達式,在函數(shù)提升方面會有所不同

 

 函數(shù)聲明的函數(shù)提升:

js變量提升和函數(shù)提升

console.log(fn);  //function fn(){console.log(1);}
function fn(){    console.log(1); }

等同下面一段代碼:
function fn(){
    console.log(1);
}

console.log(fn);  //function fn(){console.log(1);}

js變量提升和函數(shù)提升

函數(shù)聲明中,聲明的函數(shù)整體被提升到作用域最頂部。

 

 函數(shù)表達式的函數(shù)提升:

js變量提升和函數(shù)提升

console.log(fn);  // undefined

var fn = function (){
          console.log(1);
     }

等同下面一段代碼:
var fn;
console.log(fn); // undefined

fn = function (){
  console.log(1);
}

js變量提升和函數(shù)提升

函數(shù)表達式中,類似于上面講的變量提升,var出來的變量被提到作用域最頂部聲明。


文章題目:js變量提升和函數(shù)提升
本文鏈接:http://weahome.cn/article/pihdhd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部