前言

JavaScript是一門解釋型的語言 , 想要運(yùn)行JavaScript代碼需要兩個(gè)階段
本文就重點(diǎn)介紹預(yù)解釋,框架圖如下:
一、什么是預(yù)解釋
在js中,帶var 和function關(guān)鍵字的需要預(yù)解釋:
那什么是預(yù)解釋?就是在js代碼執(zhí)行之前,先申明好帶有var 關(guān)鍵字和帶有function關(guān)鍵字的變量,在內(nèi)存里先安排好。
預(yù)解釋:JavaScript代碼執(zhí)行之前,瀏覽器首先會(huì)默認(rèn)的把所有帶var和function的進(jìn)行提前的聲明或者定義
1.理解聲明和定義
聲明(declare):如var num;=>告訴瀏覽器在全局作用域中有一個(gè)num的變量了;如果一個(gè)變量只是聲明了但是沒有賦值,默認(rèn)的值是undefined
定義(defined):如num=12;=>給我們的變量進(jìn)行賦值。
2.對(duì)于帶var和function關(guān)鍵字的在預(yù)解釋的時(shí)候操作不一樣的
var =>在預(yù)解釋的時(shí)候只是提前的聲明
function =>在預(yù)解釋的時(shí)候提前的聲明+定義都完成了
3.預(yù)解釋只發(fā)生在當(dāng)前的作用域下。
例如:開始只對(duì)window下的進(jìn)行預(yù)解釋,只有函數(shù)執(zhí)行的時(shí)候才會(huì)對(duì)函數(shù)中的進(jìn)行預(yù)解釋
二、作用域鏈
1.如何區(qū)分私有變量和全局變量?
1)在全局作用域下聲明(預(yù)解釋的時(shí)候)的變量是全局變量
2)只有函數(shù)執(zhí)行會(huì)產(chǎn)生私有的作用域,比如for(){}、if(){}和switch(){}都不會(huì)產(chǎn)生私有作用域
3)在"私有作用域中聲明的變量(var 聲明)"和"函數(shù)的形參"都是私有的變量。在私有作用域中,代碼執(zhí)行的時(shí)保遇到了一個(gè)變量,首先我們需要確定它是否為私有的變量,如果是私有的變量,那么和外面的沒有在何的關(guān)系;如果不是私有的,則往當(dāng)前作用域的上級(jí)作用域進(jìn)行查找,如果上級(jí)作用域也沒有則繼續(xù)查找,一直找到window為止,這就是作用域鏈。
我們舉個(gè)例子來區(qū)別私有變量和全局變量:
//=>變量提升:var a;var b;var c;test=AAAFFF111;
var a=10,b=11,c=12;
function test(a){
//=>私有作用域:a=10 var b;
a=1;//=>私有變量a=1
var b=2;//=>私有變量b=2
c=3;//=>全局變量c=3
}
test(10);
console.log(a);//10
console.log(b);//11
console.log(c);//3
當(dāng)前文章:為什么說JavaScript預(yù)解釋是一種毫無節(jié)操的機(jī)制詳析-創(chuàng)新互聯(lián)
本文URL:http://chinadenli.net/article24/pdjce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、App開發(fā)、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容