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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

window.onload=方法名();方法名后面的括號加與不加的區(qū)別?

window.onload=方法名();方法名后面的括號加與不加的區(qū)別?

有時候加就可以,有時候加就不可以。為什么?
查看完整描述

13 回答

?
李曉健

TA貢獻1036條經(jīng)驗 獲得超461個贊

給一下兩種情況下的示例代碼,我覺得應(yīng)該是不加的 ?除非這么寫 window.onload=function(){ xxxxxx };


查看完整回答
5 反對 回復 2016-01-18
?
水秋玄

TA貢獻6條經(jīng)驗 獲得超6個贊

先來看一下代碼:

<body?onload="hello();">
<script?type="text/javascript">
function?hello(){
alert("Hello");
}
</script>
</body>

body里面的onload="hello()",此時如果你不加括號,它就變成一個字符串,沒有意義。實際上寫在html標簽里的js代碼是一種偽協(xié)議,可以寫成這樣<body onload="javascript:hello();">,只不過是省略寫法而已,通過識別后面的括號來調(diào)用函數(shù)才能執(zhí)行。

比如:

<body?onload="(function(){alert(123)})()"><!--這樣可以執(zhí)行,其中括號的方式表示立即執(zhí)行此匿名函數(shù)-->
<body?onload="function(){alert(123)}"><!--這樣不可以執(zhí)行,因為后面沒有括號,它只是一個字符串-->

以上是行內(nèi)代碼調(diào)用函數(shù)為什么要加括號的原因。

下面再看一段代碼:

function?hello(){
alert("Hello");
}
window.onload?=?hello;

這里的window.onload調(diào)用函數(shù)是不用加括號的,加了括號可以成功的原因是因為通常我們把JS代碼都放到了最后面,頁面也已經(jīng)加載完了,或者沒有涉及到頁面對象的操作情況,所以才沒有報錯。

可以看看這個錯誤的例子:

<script?type="text/javascript">
function?hello(){
var?a?=?document.getElementById("text");
a.innerHTML?=?"Hello";
}
window.onload?=?hello();//這種情況就會報錯了,因為JS是先執(zhí)行后才加載下面的文檔內(nèi)容。你把DIV放到JS代碼塊前就不會報錯。
</script>
<div?id="text"></div>

為什么會這樣呢,因為window.onload = hello()這種賦值的語句的從右到左,也就是先執(zhí)行了hello(),然后把hello函數(shù)執(zhí)行結(jié)果(如果右return的話)賦值給window.onload,跟你直接寫hello()沒什么區(qū)別。所以嚴格來說window.onload要調(diào)用的函數(shù)是不能加括號的,避免錯誤。

window.onload是一個事件,它表示在頁面加載完后執(zhí)行它指向的代碼,所以不需要給函數(shù)加括號去調(diào)用,頁面加載完會自動去調(diào)用。

function?hello(){
????alert("Hello");
}
window.onload?=?hello;
//上面的代碼完全等價于下面的代碼
window.onload?=?function?hello(){//但是這樣寫的話就沒必要給函數(shù)命名,因為其他地方?jīng)]有調(diào)用到
????alert("Hello");
}


查看完整回答
4 反對 回復 2017-10-19
已采納
?
紫色往年

TA貢獻5條經(jīng)驗 獲得超4個贊

不加括號是方法的聲明,加了括號是方法的調(diào)用;

例如:

var? init = function(){

};//聲明

init();//調(diào)用

查看完整回答
1 反對 回復 2016-01-19
?
NY24

TA貢獻1條經(jīng)驗 獲得超1個贊

加括號表示調(diào)用,函數(shù)立刻執(zhí)行;

不加括號表示函數(shù)的引用賦值,即當符合條件時才會執(zhí)行;

查看完整回答
1 反對 回復 2017-04-17
?
zhangcl

TA貢獻12條經(jīng)驗 獲得超7個贊

window是瀏覽器類自帶的對象,這個onload是window的一個屬性,這個屬性表現(xiàn)為一個function,你可以看一下js類的寫法。也就是說window有一個默認的onload方法。上面的寫法就是在重寫onload方法,類似于java里面的匿名方法。表示頁面加載完所有的文件后,執(zhí)行此方法。onload本身只是一個變量,不具有任何實際的意義,所以如果要把onload定義為一個方法,那么必須寫出具體的方法體:window.onload=function(){//方法體},這樣才是完整的聲明方式;換一種理解方式,如果onload是一個值,那么你就必須寫成window.onload="abc";道理都是一樣的,只看怎么理解,唯一的區(qū)別就在于js的屬性對象可以定義為function。

查看完整回答
反對 回復 2016-01-22
?
qq_小魚肉_0

TA貢獻5條經(jīng)驗 獲得超0個贊

加括號是匿名函數(shù)了 ?意思是把定義的不加括號函數(shù),和函數(shù)調(diào)用 2段寫為一段了 才產(chǎn)生了這樣的情況

查看完整回答
反對 回復 2016-01-19
?
vincent_chao

TA貢獻3條經(jīng)驗 獲得超1個贊

來學習一下,等待消息

查看完整回答
1 反對 回復 2016-01-18
?
早安思嘉

TA貢獻3條經(jīng)驗 獲得超0個贊

在函數(shù)后面加一個()是屬于匿名函數(shù)的一種,可用用來加載時就需要立即執(zhí)行的代碼~

查看完整回答
反對 回復 2016-01-18
?
慕女神

TA貢獻33條經(jīng)驗 獲得超365個贊

方法名后面的括號加與不加的區(qū)別很大。


查看完整回答
反對 回復 2016-01-18
?
i愛慕客

TA貢獻41條經(jīng)驗 獲得超61個贊

不太確定

查看完整回答
反對 回復 2016-01-18
?
Lyong

TA貢獻23條經(jīng)驗 獲得超16個贊


function?myFun(){
????return?1;
}
var?x?=?myFun;?//賦值操作,x是myFun函數(shù)
var?y?=?myFun();//執(zhí)行操作,y是myFun函數(shù)的執(zhí)行結(jié)果?5


查看完整回答
反對 回復 2016-01-18
  • 慕粉18221508921
    慕粉18221508921
    意思就是,x后面就是myFun函數(shù)咯,直接可以調(diào)用?y是myFun函數(shù)的執(zhí)行結(jié)果了;
  • 13 回答
  • 0 關(guān)注
  • 6891 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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