- JavaScript從入門到精通(微視頻精編版)
- 明日科技
- 775字
- 2020-09-01 15:02:25
4.6 變量的作用域

視頻講解
變量的作用域是指變量在程序中的有效范圍,在有效范圍內(nèi)可以使用該變量。變量的作用域取決于該變量是哪一種變量。
4.6.1 全局變量和局部變量
在JavaScript中,變量根據(jù)作用域可以分為兩種:全局變量和局部變量。全局變量是定義在所有函數(shù)之外的變量,作用范圍是該變量定義后的所有代碼;局部變量是定義在函數(shù)體內(nèi)的變量,只有在該函數(shù)中,且該變量定義后的代碼中才可以使用這個(gè)變量,函數(shù)的參數(shù)也是局部性的,只在函數(shù)內(nèi)部起作用。如果把函數(shù)比作一臺(tái)機(jī)器,那么,在機(jī)器外擺放的原材料就相當(dāng)于全局變量,這些原材料可以為所有機(jī)器使用,而機(jī)器內(nèi)部所使用的原材料就相當(dāng)于局部變量。
例如,下面的程序代碼說明了變量的作用域的有效范圍:
01 var a="這是全局變量"; //該變量在函數(shù)外聲明,作用于整個(gè)腳本 02 function send(){ //定義函數(shù) 03 var b="這是局部變量"; //該變量在函數(shù)內(nèi)聲明,只作用于該函數(shù)體 04 document.write(a+"<br>"); //輸出全局變量的值 05 document.write(b); //輸出局部變量的值 06 } 07 send(); //調(diào)用函數(shù)
運(yùn)行結(jié)果為:
這是全局變量 這是局部變量
上述代碼中,局部變量b只作用于函數(shù)體,如果在函數(shù)之外輸出局部變量b的值將會(huì)出現(xiàn)錯(cuò)誤。錯(cuò)誤代碼如下:
01 var a="這是全局變量"; //該變量在函數(shù)外聲明,作用于整個(gè)腳本 02 function send(){ //定義函數(shù) 03 var b="這是局部變量"; //該變量在函數(shù)內(nèi)聲明,只作用于該函數(shù)體 04 document.write(a+"<br>"); //輸出全局變量的值 05 } 06 send(); //調(diào)用函數(shù) 07 document.write(b); //錯(cuò)誤代碼,不允許在函數(shù)外輸出局部變量的值
4.6.2 變量的優(yōu)先級(jí)
如果在函數(shù)體中定義了一個(gè)與全局變量同名的局部變量,那么該全局變量在函數(shù)體中將不起作用。例如,下面的程序代碼將輸出局部變量的值:
01 var a="這是全局變量"; //聲明一個(gè)全局變量a 02 function send(){ //定義函數(shù) 03 var a="這是局部變量"; //聲明一個(gè)和全局變量同名的局部變量a 04 document.write(a); //輸出局部變量a的值 05 } 06 send(); //調(diào)用函數(shù)
運(yùn)行結(jié)果為:
這是局部變量
上述代碼中,定義了一個(gè)和全局變量同名的局部變量a,此時(shí)在函數(shù)中輸出變量a的值為局部變量的值。
推薦閱讀
- Instant Testing with CasperJS
- .NET之美:.NET關(guān)鍵技術(shù)深入解析
- Python自動(dòng)化運(yùn)維快速入門(第2版)
- Three.js開發(fā)指南:基于WebGL和HTML5在網(wǎng)頁(yè)上渲染3D圖形和動(dòng)畫(原書第3版)
- JIRA 7 Administration Cookbook(Second Edition)
- Visual Basic程序設(shè)計(jì)教程
- SQL語(yǔ)言從入門到精通
- Building a Recommendation Engine with Scala
- MATLAB for Machine Learning
- Mastering SciPy
- Greenplum構(gòu)建實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)實(shí)踐
- HTML5游戲開發(fā)實(shí)戰(zhàn)
- Android應(yīng)用開發(fā)攻略
- 區(qū)塊鏈:技術(shù)與場(chǎng)景
- HTML5程序開發(fā)范例寶典