首先,要了解一下作用域的概念:作用--讀、寫,域--范圍或空間。作用域:可用來進(jìn)行讀、寫操作的范圍或者空間。
在農(nóng)安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作專業(yè)公司,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),營銷型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè)公司,農(nóng)安網(wǎng)站建設(shè)費(fèi)用合理。
其次,再來看看瀏覽器讀取js文件(script標(biāo)簽內(nèi)的內(nèi)容)的步驟。
第一步:預(yù)解析-----根據(jù)var function 把可能用到的參數(shù)或函數(shù)找出來,放在內(nèi)存里(這相當(dāng)于放到倉庫里面)
例1:
根據(jù)var和function可以找到:a fn1
預(yù)解析的過程中會(huì)自動(dòng)給變量賦值undefined,即:a=undefined;而函數(shù)的值就函數(shù)本身,即:fn1=function fn1(){alert(2)}
所以預(yù)解析后:a = undefined, fn1=function fn1(){alert(2)}
如果函數(shù)和變量重名,那么只保留有值的那個(gè)。
例2:
根據(jù)var和function可以找到:a a a
預(yù)解析的過程中:a=undefined, a=function a(){alert(2)}, a=undefined
預(yù)解析之后就只有 a=function a(){alert(2)}
例3:
如果例2中var a=10后面還有一個(gè)函數(shù)function a(){alert(4)}
那么預(yù)解析之后的結(jié)果就變成了:a=function a(){alert(4)}。因?yàn)楹笠粋€(gè)有值的會(huì)覆蓋前一個(gè)。
第二步:就是從上而下逐行解讀代碼了
例4:
首先我們知道下面的代碼預(yù)解析的結(jié)果是:a=function a(){alert(4)}
---------------------上面的內(nèi)容,幫助去理解預(yù)解析的概念,還沒有用到“域”。而對(duì)于預(yù)解析來說,只要遇到一個(gè)“域”,就會(huì)在這個(gè)“域”內(nèi)發(fā)生預(yù)解析------------------------
例5:
以下代碼預(yù)解析:a=undefined,fn1=funciton fn1(){alert(a)var a=2;},然后開始執(zhí)行代碼
例6:在例5的基礎(chǔ)上進(jìn)行一個(gè)小改動(dòng),把var a=2改為a=2,則輸出的結(jié)果又不同。
例7:在例6基礎(chǔ)上,改動(dòng)一下
打印出的結(jié)果會(huì)是:undefined,1。大家自己思考吧。提示:funciton fn1(a)相當(dāng)于funciton fn1(var a)
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持創(chuàng)新互聯(lián)!