4 回答

TA貢獻(xiàn)1123條經(jīng)驗(yàn) 獲得超629個(gè)贊
js中函數(shù)也是變量,sum原來(lái)是個(gè)函數(shù),但執(zhí)行一次以后,sum被賦值x+y+z,變成了一個(gè)數(shù)值型變量,所以再把它當(dāng)函數(shù)用就報(bào)錯(cuò)了。

TA貢獻(xiàn)358條經(jīng)驗(yàn) 獲得超213個(gè)贊
你最主要問(wèn)題是沒(méi)有搞清楚什么是局部變量,什么是全局變量。什么時(shí)候創(chuàng)建的變量是局部變量,什么時(shí)候創(chuàng)建的是全局變量。這個(gè)問(wèn)題的核心是:在函數(shù)內(nèi)部如果我們穿件變量時(shí)不使用var,并且這個(gè)變量不是參數(shù),那么這個(gè)創(chuàng)建的變量會(huì)成為全局變量。而這個(gè)函數(shù)其實(shí)就相當(dāng)于var sum = function(){};你在內(nèi)部創(chuàng)建一個(gè)全局變量,就相當(dāng)于把這里的var sum 賦值為
x + y +z了。所以這并不是隨意不隨意的問(wèn)題。

TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
確切的說(shuō)是同一作用域函數(shù)名和變量名不能相同的,你這么寫(xiě),sum函數(shù)的執(zhí)行過(guò)程中,把sum重新指向?
x?+?y?+z; 原來(lái)的sum這個(gè)時(shí)候已經(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() 里面再申明一個(gè)sum 并且沒(méi)有變量提升,就可以避免沖突。
添加回答
舉報(bào)