国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Wird der Funktionsk?rper gemeinsam hochgestuft, wenn die Javascript-Funktionsdeklaration hochgestuft wird?
PHP中文網(wǎng)
PHP中文網(wǎng) 2017-05-19 10:43:15
0
10
809

Javascript-Funktionsdeklarationsf?rderung, wird der Funktionsk?rper gemeinsam gef?rdert?

Wenn nicht ist, gibt es das folgende Gegenbeispiel:

console.log(demo.toString()); //‘function demo() {console.log('ok')}’

demo(); //‘ok’

function demo() {
    console.log('ok')
}

Wenn ist, gibt es das folgende Gegenbeispiel:

console.log(func)  // undefined   ,如果直接執(zhí)行func()函數(shù)拋出TypeError異常 
if(true){
    function func() {
        console.log('11');
    };
}else{
    function func() {
        console.log('22');
    };
}
func(); // 11

Das erste Beispiel zeigt, dass auch der Funktionsk?rper hochgestuft wird. Wenn Sie den zweiten Teil des Codes gem?? dieser Idee verstehen, überdecken sich die ?Umbenennungs“-Funktionen gegenseitig und die sp?teren überdecken die vorherigen, also die Konsole. log(func) Die Zeichenfolge ?function func() {console.log('22');};“ wird ausgegeben, aber das ist eigentlich nicht der Fall.

Drei Fragen stellen sich:

  1. Wie verstehen Sie ?variable F?rderung, Funktionspriorit?t“?

  2. Ist auch die Funktion des K?rpers verbessert?

  3. Wie sind die Ergebnisse des zweiten Codeteils zu interpretieren?

PHP中文網(wǎng)
PHP中文網(wǎng)

認(rèn)證0級(jí)講師

Antworte allen(10)
PHPzhong

相信你看完我寫的文章就什么都明白了深入理解JavaScript執(zhí)行上下文、函數(shù)堆棧、提升的概念

習(xí)慣沉默

if代表著條件判斷,編譯的時(shí)候應(yīng)該是不會(huì)去執(zhí)行代碼,只會(huì)檢查語法詞法分析。你可以嘗試換瀏覽器,或者啟用嚴(yán)格模式做一下測試,有可能會(huì)有意想不到的事情發(fā)生哦~

1.變量提升,函數(shù)優(yōu)先,就是 var a = 1;function fun(){};中var a;和function fun(){}會(huì)提升上去,提升到作用域的頂層。
2.同樣提升了。函數(shù)表達(dá)式不會(huì),因?yàn)樗?var fun = function(){};這種,只會(huì)提升var fun;
3.第二段,其實(shí)可以用下面的方法解釋

var func;
console.log(func)
if(true){
    func=function func() {
        console.log('11');
    };
}else{
    func=function func() {
        console.log('22');
    };
}
func(); // 11

Peter_Zhu

詳細(xì)介紹 見 MDN http://kangax.github.io/nfe/#...

某草草

在非嚴(yán)格模式下,放在if語句內(nèi)部的函數(shù)聲明是否會(huì)提升在各個(gè)內(nèi)核的實(shí)現(xiàn)都不同。

結(jié)論是,函數(shù)會(huì)提升,但是在if語句內(nèi)部時(shí)要看各個(gè)內(nèi)核的實(shí)現(xiàn)。

嚴(yán)格模式禁止了不在腳本或者函數(shù)層面上的函數(shù)聲明

左手右手慢動(dòng)作

可以參考一下:/q/10...

洪濤

函數(shù)和變量聲明會(huì)被提升,函數(shù)提升優(yōu)先于變量提升,要直接運(yùn)行的代碼不能被提升吧。第一個(gè)代碼里直接都提升了。第二個(gè)代碼你定義的函數(shù)是在if 語句結(jié)構(gòu)里面,兩個(gè)log 和if 在運(yùn)行棧里面應(yīng)該是按順序執(zhí)行,顯然if 語句運(yùn)行之前你的func是還沒有聲明的 。

劉奇

es6 有一些塊級(jí)作用域的規(guī)則,這個(gè)地方 如果你你用老版本的 node或者低版本的chrome 運(yùn)行
相當(dāng)于以下代碼

function func() {
   console.log('22');
};

console.log(func);
if(true){
}else{
}

func(); // 22

可是 高版本的 node和chrome限制了 這樣的變量的提升,就出現(xiàn)了 你代碼的情況!~!~

僅有的幸福

因?yàn)镴avaScript是一種函數(shù)級(jí)作用域(function-level scope
所以if中并沒有獨(dú)立維護(hù)一個(gè)scope

英文解釋:
javascript-variable-scope-and-hoisting-explained
中文解釋:Javascript作用域和變量提升

洪濤

一般不建議在條件判斷語句中書寫函數(shù)聲明。
這在ECMAScript中屬于無效語法,javascript引擎會(huì)嘗試修正錯(cuò)誤,將其轉(zhuǎn)換為正常合理的狀態(tài)。然后這種修正的做法在不同的瀏覽器是不一樣的。建議用函數(shù)表達(dá)式:
var func;
if(true){

func=function {
    console.log('11');
};

}else{

func=function {
    console.log('22');
};

}

phpcn_u1582

http://blog.csdn.net/qq673318...
鏈接有解釋
————搬運(yùn)工

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage