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

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

我發(fā)現(xiàn)一個蛋疼的問題,sum難道是javascript的關(guān)鍵字不成?

我發(fā)現(xiàn)一個蛋疼的問題,sum難道是javascript的關(guān)鍵字不成?

我吃炸土豆 2016-02-22 11:28:32
今天寫三個數(shù)求和的時候,發(fā)現(xiàn)函數(shù)名字是sum的時候,那個函數(shù)只能調(diào)用一次,兩次以上就有問題;而改函數(shù)名字之后,就對了?。∽砹俗砹?。問題代碼如下<!DOCTYPE?HTML> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=gbk"?/> <title>函數(shù)傳參</title> <script?type="text/JavaScript"> ???function?sum(x,?y,?z)???????????????? { ??sum?=?x?+?y?+z; ??document.write(x+"、"+y+"、"+z+"和:"+sum+"<br/>"); } ????sum(5,8,3); ????//下面一行會報錯 ????sum(7,1,4); </script> </head> <body> </body> </html>難道是因為函數(shù)名字與變量名字不能相同?但應(yīng)該是可以的吧
查看完整描述

4 回答

已采納
?
Caballarii

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

js中函數(shù)也是變量,sum原來是個函數(shù),但執(zhí)行一次以后,sum被賦值x+y+z,變成了一個數(shù)值型變量,所以再把它當(dāng)函數(shù)用就報錯了。

查看完整回答
1 反對 回復(fù) 2016-02-22
  • 我吃炸土豆
    我吃炸土豆
    我試了,確實改了里面的變量名就行了。但是不太科學(xué)啊,不區(qū)分函數(shù)和變量,難道調(diào)用函數(shù)的時候可以不加括號哈
  • Caballarii
    Caballarii
    函數(shù)名不加括號就只是一個變量,可以賦值,比如function sum(){}, 你可以用var sum1=sum;這樣就可以用sum1()來調(diào)用函數(shù)
  • 我吃炸土豆
    我吃炸土豆
    ...這也太隨意了,可以賦值,又不能調(diào)用。因為可以像sum;調(diào)用的時候,又和變量定義混淆了
點擊展開后面2
?
ruibin

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

你最主要問題是沒有搞清楚什么是局部變量,什么是全局變量。什么時候創(chuàng)建的變量是局部變量,什么時候創(chuàng)建的是全局變量。這個問題的核心是:在函數(shù)內(nèi)部如果我們穿件變量時不使用var,并且這個變量不是參數(shù),那么這個創(chuàng)建的變量會成為全局變量。而這個函數(shù)其實就相當(dāng)于var sum = function(){};你在內(nèi)部創(chuàng)建一個全局變量,就相當(dāng)于把這里的var sum 賦值為

x + y +z了。所以這并不是隨意不隨意的問題。

查看完整回答
1 反對 回復(fù) 2016-02-22
  • ruibin
    ruibin
    這里并不是指針,js中沒有就不存在指針這個概念。在java中你可以不聲明就使用變量?這里卻可以,但是不聲明的結(jié)果就是全局變量。
  • ruibin
    ruibin
    不加var會引起很多問題,特別是框架里面,很多會直接報錯。嚴(yán)格模式也是不允許的,在非嚴(yán)格模式下,使用(注意這里是使用)為聲明的變量會報Reference Error
  • 我吃炸土豆
    我吃炸土豆
    誰知道他內(nèi)部有沒有用指針?java還自稱沒有指針呢,我也不是說我用java/c的思想來看待js就有多正確。只是以前沒有接觸過這種弱類型的語言,難免思維遷移,理解出錯嘛
點擊展開后面4
?
merry_離

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

確切的說是同一作用域函數(shù)名和變量名不能相同的,你這么寫,sum函數(shù)的執(zhí)行過程中,把sum重新指向?

x?+?y?+z;
原來的sum這個時候已經(jīng)變成了x+y+z;
function?sum(x,?y,?z)?{
???	var?sum?=?x?+?y?+z;
??document.write(x+"、"+y+"、"+z+"和:"+sum+"<br/>");
}
????sum(5,8,3);
????sum(7,1,4);

如果在function sum() 里面再申明一個sum 并且沒有變量提升,就可以避免沖突。

查看完整回答
反對 回復(fù) 2016-02-24
  • 我吃炸土豆
    我吃炸土豆
    問題的關(guān)鍵是,為什么變量名和函數(shù)名會沖突
  • ruibin
    ruibin
    js是弱類型語言!函數(shù)名也可以說是變量名。function sum() {}和 var sum = function() {}如果不考慮聲明提前那么他們兩個是完全一樣的,所以現(xiàn)在有些js書寫規(guī)范建議只寫成var sum = function() {}這種形式,而不寫成function sum() {}這種形式,就是為了方便其他語言轉(zhuǎn)來學(xué)習(xí)js的程序員。
  • 4 回答
  • 0 關(guān)注
  • 2235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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