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

為了賬號安全,請及時綁定郵箱和手機立即綁定

變量必須"聲明"嗎?

做這道題的時候,我發(fā)現(xiàn):

“req1 = app2(5,6);”與“var req1 = app2(5,6);”同樣起作用!

req1這個變量事先沒有聲明過呀!如果不需要聲明也可以使用變量……那么聲明變量的過程又有什么意義呢?

正在回答

2 回答

因為變量是存在一個作用域內(nèi),只有在這個作用域內(nèi)才可以訪問到這個變量;

比喻 ?function test(){var a=1 }; ?這時這個a就只在這個test方法內(nèi)可以訪問到。如果在test外面訪問a就會報未定義。 再來說一下你的問題,如果不用var 來聲明 ,還是原來的代碼,function test(){ a=1 }; 這時這個a不僅可以在 test方法內(nèi)可以訪問到,在test方法外也可以訪問到。也就是說如果不加var 就是直接聲明到了window 上,不管哪里都可以訪問到。最明顯的問題就是,你代碼寫的太多了,你前面已經(jīng)寫了一個a ? 后面忘了又寫了一個a 都沒有加 var ; 他們在任何地方都可以訪問,后面的一個就會直接覆蓋掉前面的一個。用到你前面一個a的地方的代碼就會問題。也就是傳說中的全局變量污染。

1 回復 有任何疑惑可以回復我~
#1

godhypnos 提問者

非常感謝!
2015-11-20 回復 有任何疑惑可以回復我~
#2

godhypnos 提問者

那么,下面這段: ~~~~~~~~~~~~~~~ if (){ var a ; ........ for (var b=0; ......){ ....... } } else { var c; ...... } ~~~~~~~~~~~~~~~~ 變量a、b、c作用范圍相同嗎? 另:下面的x、y是全局變量嗎? ~~~~~~~~~~~~~~~~ function temp(x,y){ var z = x +y; ....... } ~~~~~~~~~~~~~~~~ 謝謝~~?。?!
2015-11-20 回復 有任何疑惑可以回復我~

那么,下面這段:
~~~~~~~~~~~~~~~
if (){

????var a ;
? ??........
????for (var b=0; ......){
????.......
? ? }
}
else {
????var c;
????......
}
~~~~~~~~~~~~~~~~

變量a、b、c作用范圍相同嗎?

另:下面的x、y是全局變量嗎?
~~~~~~~~~~~~~~~~
function temp(x,y){
????var z = x +y;
????.......
}
~~~~~~~~~~~~~~~~

謝謝~~?。?!

0 回復 有任何疑惑可以回復我~
#1

李曉健

a b c 的作用域相同,因為ECMA5中 作用域還沒有塊級的,都是方法級的;ECMA6中才有塊級作用域。x y 也不是全局變量,他們只是參數(shù),也只有在方法內(nèi)才可以訪問到。
2015-11-20 回復 有任何疑惑可以回復我~
#2

godhypnos 提問者 回復 李曉健

萬分感謝~!
2015-11-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468966    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網(wǎng)頁動態(tài)交互世界

進入課程

變量必須"聲明"嗎?

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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