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

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

我置換上面兩種定義先后,怎么一直返回234

我置換上面兩種定義先后,怎么一直返回234

心有法竹 2023-04-09 14:10:17
var a =function(){alert('234');}function a (){alert(123);}a();
查看完整描述

2 回答

?
尚方寶劍之說(shuō)

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

在JS中函數(shù)的定義可以分為兩種:
1. 函數(shù)聲明
2. 函數(shù)表達(dá)式

根據(jù)你的代碼,下面的代碼就是函數(shù)的聲明(當(dāng)然另外一段代碼是函數(shù)表達(dá)式):
function a (){
alert(123);
}

根據(jù)JS中的語(yǔ)法特性(注意哦,是js的語(yǔ)法特點(diǎn),要記?。?br/>在javascript函數(shù)體內(nèi)(執(zhí)行作用域)聲明的變量,無(wú)論在函數(shù)體何處聲明,它將都會(huì)被提升到函數(shù)的頂部,我們稱這種現(xiàn)象為變量提升。 函數(shù)呢,它也有這種特性,即無(wú)論在函數(shù)體何處聲明另一個(gè)函數(shù),它將都會(huì)被提升到函數(shù)的頂部。只是采用函數(shù)表達(dá)式和函數(shù)聲明所體現(xiàn)的函數(shù)提升的內(nèi)容是有差別的:函數(shù)表達(dá)式和變量提升類似,只會(huì)提升函數(shù)的變量,不提升函數(shù)的定義;而函數(shù)聲明提升時(shí),不僅僅會(huì)提升函數(shù)的聲明,函數(shù)的定義也會(huì)被提升

根據(jù)以上特性,你的代碼在執(zhí)行時(shí),
function a (){
alert(123);
}
這段代碼被提升到執(zhí)行作用域的頂端,最開始被執(zhí)行;

然后,在執(zhí)行
var a =function(){

alert('234');
}
這段代碼,導(dǎo)致該代碼覆蓋了前面的函數(shù)聲明代碼;

不信你可以做個(gè)測(cè)試:
將a()放到j(luò)s代碼的最頂端,可以看看會(huì)打印什么結(jié)果,此時(shí)你就明白了!

 


查看完整回答
反對(duì) 回復(fù) 2023-04-12
?
慕尼黑5688855

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

1:調(diào)用關(guān)鍵字function來(lái)構(gòu)造


function distance(x1,x2,y1,y2)  {    var dx=x2-x1;    var dy=y2-y1;    return Math.sqrt(dx*dx+dy*dy);  }

2:使用Function()構(gòu)造函數(shù)(請(qǐng)注意與上面的大小寫)


var f=new Function*"x","y","return x*y");

這行代碼創(chuàng)建了一個(gè)新函數(shù),該函數(shù)和你所熟悉的語(yǔ)法定義的函數(shù)基本上時(shí)等價(jià)的:


function f(x,y)   {       return x*y;   }

Functino()構(gòu)造函數(shù)可以接受任意多個(gè)字符串參數(shù)。它的最后一個(gè)參數(shù)時(shí)函數(shù)的主體,其中可以包含任何JavaScript語(yǔ)句,語(yǔ)句之間用分號(hào)分隔。其他的參數(shù)都是用來(lái)說(shuō)明函數(shù)要定義的形式參數(shù)名的字符串。如果你定義的函數(shù)沒(méi)有參數(shù),那么可以只需給構(gòu)造函數(shù)傳遞一個(gè)字符串(即函數(shù)的主體)即可。 
  注意,傳遞給構(gòu)造函數(shù)Function()的參數(shù)中沒(méi)有一個(gè)用于說(shuō)明它要?jiǎng)?chuàng)建的函數(shù)名。用Function()構(gòu)造函數(shù)創(chuàng)建的未命名函數(shù)有時(shí)被成為“匿名函數(shù)”。 
  你可能非常想知道Function()構(gòu)造函數(shù)的用途是什么。為什么不能只用function語(yǔ)句來(lái)定義所有的函數(shù)呢?原因是Function()構(gòu)造函數(shù)允許我們動(dòng)態(tài)地建立和編譯一個(gè)函數(shù),它不會(huì)將我們限制在function語(yǔ)句預(yù)編譯的函數(shù)體中。這樣做帶來(lái)的負(fù)面影響效應(yīng)就是每次調(diào)用一個(gè)函數(shù)時(shí),F(xiàn)unction()構(gòu)造函數(shù)都要對(duì)它進(jìn)行編譯。因此,在循環(huán)體中或者在經(jīng)常使用的函數(shù)中,我們不應(yīng)該頻繁地調(diào)用這個(gè)構(gòu)造函數(shù)。 
  使用Function()構(gòu)造函數(shù)的另一個(gè)原因是它能夠?qū)⒑瘮?shù)定義為JavaScript表達(dá)式的一部分,而不是將其定義一個(gè)語(yǔ)句,這種情況下使用它就顯得比較的方面,甚至可以說(shuō)精致。

 3:函數(shù)直接量 
  函數(shù)直接量是一個(gè)表達(dá)式,它可以定義匿名函數(shù)。函數(shù)直接量的語(yǔ)法和function語(yǔ)句非常相似,只不過(guò)它被用作表達(dá)式,而不是用作語(yǔ)句,而且也無(wú)需指定函數(shù)名。下面的三行代碼分別使用function()語(yǔ)句、Funciont()構(gòu)造函數(shù)和函數(shù)直接量定義了三個(gè)基本上相同的函數(shù):


function f(x){return x*x};  var f=new Function("x","return x*x;");  var f=function(x){reurn x*x};

在JavaScript1.1中,可以使用構(gòu)造函數(shù)Function()來(lái)定義函數(shù),在JavaScript1.2和其后的版本中,還可以使用函數(shù)直接量來(lái)構(gòu)造函數(shù)。你應(yīng)該注意這兩種方法之間的重要差別。    
  首先,構(gòu)造函數(shù)Function()允許在運(yùn)行時(shí)動(dòng)態(tài)地創(chuàng)建和編譯JavaScript代碼。但是函數(shù)直接量卻是函數(shù)結(jié)構(gòu)的一個(gè)靜態(tài)部分,就像function語(yǔ)句一樣。 
  其次,作為第一個(gè)差別的必然結(jié)果,每次調(diào)用構(gòu)造函數(shù)Function()時(shí)都會(huì)解析函數(shù)體并且創(chuàng)建一個(gè)新東漢數(shù)對(duì)象。如果對(duì)構(gòu)造函數(shù)的調(diào)用出現(xiàn)在一個(gè)循環(huán)中,或者出現(xiàn)在一個(gè)經(jīng)常被調(diào)用的函數(shù)中,這種方法的效率非常低。另一個(gè)方面,函數(shù)直接量或出現(xiàn)在循環(huán)和函數(shù)中的嵌套函數(shù)不是在每次調(diào)用時(shí)都被重新編譯,而且每當(dāng)遇到一個(gè)函數(shù)直接量時(shí)也不創(chuàng)建一個(gè)新的函數(shù)對(duì)象。 
  Function()構(gòu)造函數(shù)和函數(shù)之間量之間的第三點(diǎn)差別是,使用構(gòu)造函數(shù)Function()創(chuàng)建的函數(shù)不使用詞法作用域,相反的,它們總是被當(dāng)作頂級(jí)函數(shù)來(lái)編譯,就像下面代碼所說(shuō)明的那樣:

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

添加回答

舉報(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)