預(yù)解釋-基礎(chǔ)-創(chuàng)新互聯(lián)

預(yù)解釋(變量提升):在當(dāng)前的作用域中,JS代碼從上到下執(zhí)行之前,瀏覽器會默認(rèn)的先把所有帶var/function關(guān)鍵字的進(jìn)行提前的聲明或者定義
對帶var變量的是提前聲明(declare)
對帶function關(guān)鍵字的是提前定義(聲明+定義)(defined)
->在預(yù)解釋階段,帶var關(guān)鍵字的只是提前的聲明,只有在JS從上到下執(zhí)行的過程中才會進(jìn)行定義賦值:
1 //->預(yù)解釋階段:告訴瀏覽器在當(dāng)前的作用域中(window)有一個名字叫做num的變量:var num;2 console.log(num);//->undefined(只有聲明沒有定義的默認(rèn)值是undefined)3 var num = 13;//->num=13;(定義:給變量賦值num=13)4 console.log(num);//->13
->在預(yù)解釋階段,帶function關(guān)鍵字的,聲明+定義兩部分都完成了:
1 //->預(yù)解釋階段:fn=xxxfff000(xxxfff000是一個內(nèi)存地址)2 console.log(fn);//->函數(shù)本身 function fn() { console.log("ok"); }3 function fn() {4     console.log("ok"); 
5 }//->3-5行代碼在預(yù)解釋階段已經(jīng)聲明加定義了,以后代碼執(zhí)行的時(shí)候在遇到也不會重新進(jìn)行操作,直接跳過這幾行就可以了 6 console.log(fn);//->函數(shù)本身 function fn() { console.log("ok"); }

創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元岑溪做網(wǎng)站,已為上家服務(wù),為岑溪各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
->預(yù)解釋只發(fā)生在當(dāng)前的作用域中,開始的時(shí)候只對window作用域下帶var/function關(guān)鍵字的進(jìn)行預(yù)解釋,而函數(shù)體中出現(xiàn)的帶var/function關(guān)鍵字的這些代碼此時(shí)還都是一堆字符串呢(沒有實(shí)際意義),所以開始的時(shí)候函數(shù)體中帶這些關(guān)鍵字的都不需要管
只有全局代碼執(zhí)行到函數(shù)執(zhí)行的時(shí)候,才會形成一個新的私有作用域,在新的私有作用域中:首先給函數(shù)的形參賦值,其次是私有作用域中的預(yù)解釋:把私有作用域中帶var和function關(guān)鍵字的進(jìn)行提前的聲明或者定義,最后才是私有作用域中的代碼從上到下執(zhí)行
 1 //首先是window作用域下的預(yù)解釋:var n; var s; function fn=xxxfff000;   2 console.log(n,s);//n->undefined; s->undefined 3 var n = 9;//全局作用域下的n=9; 4 var s = "str1";//全局作用域下的s="str1"; 5 function fn() { 6   console.log(n,s);//n->undefined; (這個是fn私有作用域的n) s->str1; (這個是全局作用域的s) 7   n = 7;//定義私有作用域下的n=7; 8   s = "str2";//定義全局作用域下的s="str2"; 9    var n = 6;//定義私有作用域下的n=6;10 }11 fn();12 console.log(n,s);//此時(shí)輸出的都是全局作用域的: n->9; s->str2;
->作用域鏈的問題:
在私有作用域中,JS代碼從上到下執(zhí)行,如果遇到了一個變量,
首先看是否是自己私有的變量,如果是私有的,那么我們接下來的所有操作(獲取值,修改值...)都是用的自己私有的,和外面沒有任何關(guān)系
如果不是自己私有的,則去當(dāng)前作用域的上一級作用域中查找,如果上一級有,那么接下來操作的,都是在操作上級作用域中的變量;如果上級也沒有,則繼續(xù)向上查找,一直找到window為止
如果找到window還沒有?如果是 變量=值 相當(dāng)于給window下增加一個屬性名和屬性值:如果是console.log(變量)獲取值,會報(bào)錯
->如何看變量是否為私有的:
首先看是否為形參
然后看是否在私有作用域中聲明過(看有沒有帶var)
兩者有其一,就是自己私有的變量;如果兩個都不是,就不是私有的,按照上述的作用域鏈原理來進(jìn)行查找

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

當(dāng)前文章:預(yù)解釋-基礎(chǔ)-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://muchs.cn/article22/cdcicc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站品牌網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、移動網(wǎng)站建設(shè)電子商務(wù)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)