有關(guān)變量的聲明問題,求大神給解答下。謝謝!
<script type="text/javascript">
? function ?app2(x,y)
? { var sum,x,y;
? ? sum = x * y;
? ? return sum;
? }
?req1 = app2(5,6);
//?var req1 = app2(5,6);
?req2 = app2(2,3);
//?var req2 = app2(2,3);
?sumq = req1+req2;
//?var sumq = req1+req2;
document.write("req1的值:"+req1+"<br/>");
document.write("req2的值:"+req2+"<br/>");
document.write(req1+"與"+req2+"和:"+sumq);
</script>
問題:req1、req2、sumq這三個變量,聲明和不聲明對運(yùn)行結(jié)果都沒有影響,這兩者有什么區(qū)別嗎?在使用的過程中有什么前提嗎?
2016-11-22
?req1 = app2(5,6);
//?var req1 = app2(5,6);
?req2 = app2(2,3);
//?var req2 = app2(2,3);
?sumq = req1+req2;
//?var sumq = req1+req2;
以上這段代碼,不管你用var聲明還是不聲明,這兩種寫法都是全局變量,沒什么區(qū)別,因?yàn)槭窃诤瘮?shù)外。
? function ?app2(x,y)
? { var sum,x,y;
? ? sum = x * y;
? ? return sum;
? }
這段代碼里面的三個變量均為局部變量。在函數(shù)里面用var聲明了的變量就是局部變量。
? function ?app2(x,y)
? {?
? ? return ?x * y;
? }
如果是這樣寫的話,當(dāng)app2()這個函數(shù)被調(diào)用時,x,y都是全局變量,因?yàn)闆]用var聲明。
全局變量就是在代碼里哪都能被調(diào)用,局部變量只能在某個范圍內(nèi)使用(如某個函數(shù)里使用)。
2016-11-22
在函數(shù)里沒用var聲明的變量,當(dāng)函數(shù)被調(diào)用時就會變成全局變量,在函數(shù)里使用var聲明了的變量,就是局部變量。在函數(shù)外用var聲明和沒聲明的變量都是全局變量。
2016-11-21
這三個變量如果不聲明,也是可以直接給它賦值的,但是當(dāng)給這三個沒聲明的變量賦值的時候,javaScript引擎就會自動把這個變量變成全局變量了,而本身你聲明的變量也是全局變量,所以沒有影響。