我吃炸土豆
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ù)用就報錯了。
點擊展開后面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了。所以這并不是隨意不隨意的問題。
點擊展開后面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 并且沒有變量提升,就可以避免沖突。
添加回答
舉報
0/150
提交
取消