第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

javascript的函數(shù)為什么不能像php那樣先調(diào)用再申明?

javascript的函數(shù)為什么不能像php那樣先調(diào)用再申明?

DIEA 2019-03-21 19:11:43
javascript中,函數(shù)一定要這樣:function a(){}a();如果反了,就不行,比如:a();function a(){};但是在php里就可以這樣:a();function a(){}同樣是腳本語(yǔ)言,為什么javascript不能在調(diào)用后申明?javascript后續(xù)版本中是否會(huì)實(shí)現(xiàn)這樣的功能?
查看完整描述

8 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

  1. function func(){...}這是函數(shù)聲明,將在代碼執(zhí)行前被(完整地)加載到作用域的最前端,因此在代碼編寫中可以(在同作用域或上層作用域中)后置,即題主所說的先調(diào)用再聲明。

  2. 函數(shù)聲明/變量聲明都會(huì)被hoisting,其中函數(shù)聲明會(huì)被完整前置,而變量聲明僅前置聲明部分不前置賦值部分。

代碼栗子:

(function(){

  f1() 

  f2()


  var f1 = function(){}

  function f2(){}

})()

運(yùn)行時(shí):


(function(){

  var f1,function f2(){} //hoisting,被隱式提升的聲明


  f1() //ReferenceError: f1 is not defined

  f2()


  f1 = function(){}

})()

結(jié)論:

js目前就支持題主所說的先調(diào)用再聲明。


查看完整回答
反對(duì) 回復(fù) 2019-04-12
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

對(duì)于提升 hoisting 的理解,必須強(qiáng)烈推薦 @nightire 前輩的博文:

《理解 JavaScript(二)》

@nightire 前輩在博文中詳細(xì)講解和介紹了 Scoping & Hoisting,題主耐心讀完就基本清楚了。

順便提下我的一篇博文,也介紹了一點(diǎn)相關(guān)的內(nèi)容,題主不妨也讀一下。:)

《細(xì)說 Javascript 函數(shù)篇(一) : 函數(shù)聲明和函數(shù)表達(dá)式》


查看完整回答
反對(duì) 回復(fù) 2019-04-12
?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

你確定不可以?


test();

function test() {

    console.log('test string');

}


查看完整回答
反對(duì) 回復(fù) 2019-04-12
?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

等你真正學(xué)會(huì)函數(shù)式編程,理解js里面的閉包以后,你才會(huì)明白js的函數(shù)比php里面的好用太多


查看完整回答
反對(duì) 回復(fù) 2019-04-12
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

這樣應(yīng)該是統(tǒng)一規(guī)范語(yǔ)言,兼容各種瀏覽器。


查看完整回答
反對(duì) 回復(fù) 2019-04-12
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

樓主是怎么得到這個(gè)結(jié)論的。
alert(a());
function a(){
return 1;
}//1
這樣的代碼是可以運(yùn)行的。

alert(a());
var a=function(){
return 1;
}//error: unexpected indentifier
這樣的代碼才會(huì)報(bào)錯(cuò)。

因?yàn)楹瘮?shù)聲明會(huì)在js解析器解析時(shí)候率先解析,保證其他代碼執(zhí)行之前,函數(shù)可用。而函數(shù)表達(dá)式必須要等到代碼解析器解析到他所在代碼行,才會(huì)被解釋執(zhí)行。


查看完整回答
反對(duì) 回復(fù) 2019-04-12
?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

樓主,你沒搞懂JS的函數(shù)聲明提升。


a();

function a(){};

這個(gè)是可以執(zhí)行的,而像下面這樣是不行


a();   //a是undefined,a已是已經(jīng)聲明了,因?yàn)関ar a,但是未賦值

var a = function(){};


查看完整回答
反對(duì) 回復(fù) 2019-04-12
  • 8 回答
  • 0 關(guān)注
  • 545 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)