es6函數(shù)提升特性簡(jiǎn)單總結(jié)

例子

var sayTruth =function(){console.log(2)}
function  sayTruth(){console.log('1')};
sayTruth();
環(huán)境 es5 es5嚴(yán)格模式 es6 node es6 node嚴(yán)格模式 es6瀏覽器 es6瀏覽器嚴(yán)格模式 babel
結(jié)果 2 2 2 2 2 2 2

例子

sayTruth();

function sayTruth(){console.log('1')};
環(huán)境 es5 es5嚴(yán)格模式 es6 node es6 node嚴(yán)格模式 es6瀏覽器 es6瀏覽器嚴(yán)格模式 babel
結(jié)果 1 1 1 1 1 1 1

從前面兩個(gè)例子可以簡(jiǎn)單看出 es6對(duì)函數(shù)提升恩es5保持一致

例子

if(1){
    function sayTruth(){console.log('1')};
}
else{
    function sayTruth(){console.log('2')};
}
sayTruth();

執(zhí)行結(jié)果

環(huán)境 es5 es5嚴(yán)格模式 es6 node es6 node嚴(yán)格模式 es6瀏覽器 es6瀏覽器嚴(yán)格模式 babel
結(jié)果 2 not defined 1 not defined 1 not defined not defined
原因 變量提升 嚴(yán)格模式 嚴(yán)格模式 嚴(yán)格模式 嚴(yán)格模式

ES6 引入了塊級(jí)作用域,明確允許在塊級(jí)作用域之中聲明函數(shù)。ES6 規(guī)定,塊級(jí)作用域之中,函數(shù)聲明語(yǔ)句的行為類(lèi)似于let,在塊級(jí)作用域之外不可引用。若改變了塊級(jí)作用域內(nèi)聲明的函數(shù)的處理規(guī)則,顯然會(huì)對(duì)老代碼產(chǎn)生很大影響。為了減輕因此產(chǎn)生的不兼容問(wèn)題,ES6規(guī)定,瀏覽器的實(shí)現(xiàn)可以不遵守上面的規(guī)定,允許有自己的行為方式。

  • 允許在塊級(jí)作用域內(nèi)聲明函數(shù)。
  • 函數(shù)聲明類(lèi)似于var,即會(huì)提升到全局作用域或函數(shù)作用域的頭部。
  • 同時(shí),函數(shù)聲明還會(huì)提升到所在的塊級(jí)作用域的頭部。

例子

sayTruth();
if(1){
    function sayTruth(){console.log('1')};
}
else{
    function sayTruth(){console.log('2')};
}

環(huán)境 es5 es5嚴(yán)格模式 es6 node es6 node嚴(yán)格模式 es6瀏覽器 es6瀏覽器嚴(yán)格模式 babel
結(jié)果 2 not defined not a function not defined not a function not defined not defined
原因 變量提升 嚴(yán)格模式 嚴(yán)格模式 嚴(yán)格模式 嚴(yán)格模式

對(duì)于es6 等同于

var sayTruth ;
sayTruth();
if(1){
    function sayTruth(){console.log('1')};
}
else{
    function sayTruth(){console.log('2')};
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容