麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

JavaScript 詞法作用域

2019-11-06 06:06:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1. 詞法作用域

(1)什么是作用域?

作用域就是可以作用的區(qū)域,即可以使用的區(qū)域。變量的作用域就是可以使用該變量的一個(gè)范圍。最經(jīng)典的作用域就是塊級(jí)作用域,利用塊來(lái)限定代碼的執(zhí)行范圍。在 ES6 中引入了關(guān)鍵字 let,該關(guān)鍵字與 var 一樣,用于聲明變量。
{    console.log(num);//num is not defined    let num = 123;//從定義開(kāi)始至所在的花括號(hào)結(jié)束的范圍內(nèi)生效    console.log(num);}console.log(num);

(2)詞法作用域

在 js 中(不考慮 ES6 特性)是沒(méi)有塊級(jí)作用域的,只有詞法作用域詞法作用域:與代碼的運(yùn)行無(wú)關(guān),只與代碼的定義書寫內(nèi)容有關(guān)。黃金法則:只有函數(shù)可以限定作用域,變量聲明會(huì)提升,訪問(wèn)先在當(dāng)前找,沒(méi)有父級(jí)作用域來(lái)查。可以利用代碼的書寫繪制出代碼的作用域關(guān)系。練習(xí):
if(!('a' in window)){    var a = 123;}console.log(a);var a = 123;function b(a){    console.log(a);    function a(){        console.log('a');    }}b(a);in 運(yùn)算符語(yǔ)法:'字符串' in 對(duì)象 -> boolean含義:該對(duì)象中是否存在屬性名字為字符串的形式,如果存在返回 true例如:
var p = {name: xxx};'name' in p; //true'age' in p; //false繪制作用域關(guān)系圖:① 在全局范圍內(nèi)聲明的所有變量,都是在該范圍內(nèi)可以被使用的,而且沒(méi)有前后順序之分② 如果有函數(shù),那么函數(shù)內(nèi)部是獨(dú)立于外界的一個(gè)完整的作用域范圍
function foo(){    //函數(shù)內(nèi)部也要預(yù)解析,聲明提升    console.log(num);    var num = 10;    console.log(num);}foo(); //先打印undefined,后打印10③ 在函數(shù)內(nèi)部如果沒(méi)有找到對(duì)應(yīng)的變量,會(huì)到函數(shù)外面查找;如果函數(shù)內(nèi)部和函數(shù)外部同時(shí)有變量,優(yōu)先使用函數(shù)內(nèi)部的。先后打印:456、123、123結(jié)果:報(bào)錯(cuò),num is not defined,num向上一層找到了變量聲明并使用,而此聲明是在函數(shù)體內(nèi)的,不在全局范圍,故num不是全局變量,只是函數(shù)foo1內(nèi)部的變量 結(jié)果:打印456,num向上所有層找都沒(méi)有找到變量聲明,故num成為了全局變量

2. 作用域鏈

在分析代碼的時(shí)候,多個(gè)作用域中含有哪些數(shù)據(jù),不容易記住根據(jù)變量訪問(wèn)的搜索規(guī)則(當(dāng)前有就用,沒(méi)有就上一級(jí)搜索)繪制作用域鏈規(guī)則:① 把全局作用域看作0級(jí)作用域,繪制一條直線② 凡是看到函數(shù),就延伸出一條鏈,記為 n+1 級(jí)鏈③ 進(jìn)入函數(shù)內(nèi),重復(fù)上述操作注意:在繪制鏈的時(shí)候,不要給任何變量賦值,將圖繪制完成以后,再一句一句分析代碼,將數(shù)據(jù)添加上去例:

3. 變量的訪問(wèn)規(guī)則

在訪問(wèn)一個(gè)變量的時(shí)候,首先在當(dāng)前作用域中查找,如果找到則使用,并停止查找,如果沒(méi)找到則在上一級(jí)作用域中查找(上一級(jí)鏈),如此往復(fù),一定會(huì)找到全局作用域(0級(jí)鏈),如果還沒(méi)有數(shù)據(jù),則報(bào)錯(cuò)(is not defined),如果是設(shè)置數(shù)據(jù),則會(huì)在全局作用域中增加一個(gè)屬性(此處嚴(yán)格模式會(huì)報(bào)錯(cuò))。

4. eval 函數(shù)

將字符串作為代碼執(zhí)行語(yǔ)法:
eval( '語(yǔ)句' )一般網(wǎng)站不需要考慮安全性的時(shí)候,可以這么使用,但是現(xiàn)在已經(jīng)不建議使用了。推薦使用 Function 實(shí)現(xiàn)類似的功能。注意:在嚴(yán)格模式下,eval 可以限定作用域。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 51国产偷自视频区视频小蝌蚪 | 欧美一级电影网 | 亚洲精品午夜国产va久久成人 | 91看片免费版 | 久久生活片| 男女羞羞视频在线观看免费 | 羞羞答答影院 | 久久国产精品成人免费网站 | 精品一区二区视频在线观看 | 精品亚洲成a人在线观看 | 久久免费视频7 | 欧美一级做一级爱a做片性 91在线视频观看 | 欧美国产一区二区三区激情无套 | 一二区电影| 91精品国产综合久久青草 | 最新中文字幕第一页视频 | 成人男女啪啪免费观看网站四虎 | 羞羞羞羞视频 | av免费在线不卡 | 黄色作爱视频 | 久久草草亚洲蜜桃臀 | 91福利社在线| 国产毛片在线看 | 欧洲a级片| www.777含羞草 | 亚洲人成中文字幕在线观看 | 免费黄色欧美视频 | 欧美日韩成人一区二区 | 欧美一区二区黄色 | 在线观看中文字幕av | 成人羞羞在线观看网站 | 国内精品久久久久久久影视红豆 | 91精品动漫在线观看 | 国产一级中文字幕 | 久久免费综合视频 | 妇女毛片 | 欧美人成在线 | 成人性视频免费网站下载软件 | 韩国一级免费视频 | 性视频久久 | 成人三级视频在线观看 |