JS變量及其作用域
1、 變量及其作用域:變量分為“全局變量”和“局部變量”,“全局變量”申明在函數(shù)外部,可供所有函數(shù)使用,而“局部變量”申明在函數(shù)體內(nèi)部,只能在定義該變量的函數(shù)體內(nèi)使用。
(備注:在申明變量時沒有var關(guān)鍵字,而是直接賦值的變量均為全局變量)
<script type="text/javascript"> function main() { n = 10;//這里的n為全局變量,可以被外部直接使用 } main(); alert(n); </script>
2、 在函數(shù)體內(nèi),局部變量的優(yōu)先級高于全局變量。
<script type="text/javascript"> //網(wǎng)上看到的我認(rèn)為很有代表性的一個例子,在函數(shù)體外部和內(nèi)部都申明了相同名字的變量,變量的作用域問題,例子如下: var n = 1; function test() { alert(n); //這里的a并不是全局變量,原因是函數(shù)體第四行申明了一個相同重名的局部變 //量a,如果把第四行a的申明注釋掉,那么這里的a顯示1,為全局變量。所以得 //出結(jié)論:全局變量a被局部變量a覆蓋了。 //說明了JS函數(shù)在test()在執(zhí)行前,函數(shù)體內(nèi)的變量a都指向了局部變量,但本 //行輸出的a在執(zhí)行過程中還沒有被賦值,所以顯示undefined。 n = 2; alert(n); var n; //本行申明局部變量a alert(n); } test(); alert(n); </script>
按照我的理解,上面例子最后輸出的答案應(yīng)該是:1 2 2 1;但是正確的答案是:undefined 2 2 1; 原因就是函數(shù)體外部和內(nèi)部都申明了相同名字的變量時,局部變量覆蓋了全局變量。
3、 外部怎么讀取函數(shù)體內(nèi)部的局部變量呢?
一般來說,只有函數(shù)體內(nèi)部可以直接得到外部的全局變量,但是外部要得到函數(shù)體內(nèi)部的局部變量是不行的。但是,通過在函數(shù)體內(nèi)部再定義一個函數(shù)返回局部變量,再從外部調(diào)用函數(shù)就能實現(xiàn)了。
<script type="text/javascript"> function f1() { var n = 10; function f2() {//在f1()內(nèi)部再定義f2(),通過f2()訪問f1()中的局部變量 alert(n); } return f2;//返回f1()局部變量n } var result = f1(); //在外部調(diào)用f1()函數(shù),就能獲取局部變量n的值 result(); // 10,即為n的值 </script>
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- JavaScript高級程序設(shè)計之變量與作用域
- JS中作用域以及變量范圍分析
- JavaScript變量作用域及內(nèi)存問題實例分析
- JS塊級作用域和私有變量實例分析
- JavaScript變量類型以及變量作用域詳解
- javascript 的變量、作用域和內(nèi)存問題
- js 作用域和變量詳解
- 關(guān)于JS變量和作用域詳解
- JavaScript變量的作用域全解析
- JavaScript 變量、作用域及內(nèi)存
- JavaScript中的變量作用域介紹
- js變量、作用域及內(nèi)存詳解
- 深入解析JavaScript中的變量作用域
- Javascript變量作用域詳解
- JavaScript中變量的作用域詳解
相關(guān)文章
JS與CSS3實現(xiàn)圖片響應(yīng)鼠標(biāo)移動放大效果示例
這篇文章主要介紹了JS與CSS3實現(xiàn)圖片響應(yīng)鼠標(biāo)移動放大效果,結(jié)合實例形式分析了javascript與css3響應(yīng)鼠標(biāo)事件動態(tài)修改頁面元素屬性實現(xiàn)圖片放大效果相關(guān)操作技巧,需要的朋友可以參考下2018-05-05解決window.history.back()返回上一頁有時候需要點(diǎn)擊多次問題
這篇文章主要介紹了解決window.history.back()返回上一頁有時候需要點(diǎn)擊多次問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03解決使用layui對select append元素?zé)o效或者未及時更新的問題
今天小編就為大家分享一篇解決使用layui對select append元素?zé)o效或者未及時更新的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09