js作用域

變量特性
javascript變量是弱類型(也叫松散類型)的,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)
編程語言分為動態(tài)類型語言和靜態(tài)類型語言兩種。 動態(tài)類型語言是指在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語言,也就是說,在用動態(tài)類型的語言編程時,不用給任何變量指定數(shù)據(jù)類型,該語言會在第一次賦值給變量時,在內(nèi)部將數(shù)據(jù)類型記錄下來。javascript就是動態(tài)類型語言的代表。
變量松散類型的特性總結(jié)起來有兩點(diǎn):一是聲明時不用給變量指定數(shù)據(jù)類型;二是賦值時可以修改數(shù)據(jù)類型(有效但是不推薦)
變量作用域
變量的作用域(scope)是程序源代碼中定義這個變量的區(qū)域
   作用域分為全局作用域和函數(shù)作用域(又叫局部作用域)兩種
   全局作用域是最外圍的一個執(zhí)行環(huán)境,在web瀏覽器中,全局執(zhí)行環(huán)境被認(rèn)為是window對象。所有全局變量和函數(shù)都是作為window對象的屬性和方法創(chuàng)建的。全局變量擁有全局作用域,在javascript代碼中的任何地方都是有定義的。全局作用域直到應(yīng)用程序退出例如關(guān)閉網(wǎng)頁或?yàn)g覽器時才會被銷毀
  在函數(shù)內(nèi)聲明的變量只在函數(shù)體內(nèi)有定義。它們是局部變量,作用域是局部性的。函數(shù)參數(shù)也是局部變量,它們只在函數(shù)體內(nèi)有定義。函數(shù)作用域中的所有代碼執(zhí)行完畢后,該作用域被銷毀,保存在其中的所有變量和函數(shù)定義也隨之銷毀.
例如:函數(shù)內(nèi)部定義的變量在外部使用將會報錯
<pre>
function test(){
var message = 'hi';
}
test();
alert(message);//錯誤
</pre>
如果省略var操作符,則會創(chuàng)建一個全局變量(不建議使用)
<pre>
function test(){
message = 'hi';
}
test();
alert(message);//'hi'
</pre>
  在函數(shù)體內(nèi),局部變量的優(yōu)先級高于同名的全局變量,如果在函數(shù)內(nèi)聲明的一個局部變量或者函數(shù)參數(shù)中帶有的變量和全局變量重名,那么全局變量就被局部變量遮蓋
<pre>
var scope = 'global';
function checkscope(){
var scope = 'local';
return scope;
};
checkscope();//'local'
</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容