摘要:結(jié)果結(jié)果函數(shù)定義式函數(shù)表達(dá)式結(jié)果預(yù)編譯是以段為處理單元結(jié)果作用域鏈代碼優(yōu)化在標(biāo)識(shí)符解析的時(shí)候,查找全局變量是最慢的,所以盡量使用局部變量。全局變量的被調(diào)用兩次,查找該變量必須遍歷整個(gè)作用域鏈,耗費(fèi)時(shí)間可以把它存儲(chǔ)到局部變量里再使用。
作用域?qū)傩允窃诙x函數(shù)的時(shí)候決定的,不是在調(diào)用函數(shù)的時(shí)候決定。
JavaScript中的函數(shù)運(yùn)行在它們被定義的作用域里,而不是它們被執(zhí)行的作用域里。
eg.
var name = "lw"; function alert_1 () { alert(name); } function alert_2 () { var name = "zgm"; alert_1(); } alert_2();// 結(jié)果:lwjs的預(yù)編譯:
在一段js代碼執(zhí)行之前,會(huì)預(yù)先處理var關(guān)鍵字和function定義式(函數(shù)表達(dá)式和函數(shù)定義式),對(duì)于局部變量,變量的值會(huì)在真正執(zhí)行的時(shí)候計(jì)算。
函數(shù)定義注意:函數(shù)定義式和函數(shù)表達(dá)式的不同, 對(duì)于函數(shù)定義式, 會(huì)將函數(shù)定義提前.而函數(shù)表達(dá)式, 會(huì)在執(zhí)行過程中才計(jì)算。
eg.
alert(typeof hello);//結(jié)果:function alert(typeof world);//結(jié)果:undefined function hello(){ //函數(shù)定義式 alert("hello"); } var world=function(){ //函數(shù)表達(dá)式 alert("world"); } alert(typeof world);//結(jié)果:function
js預(yù)編譯是以段為處理單元
作用域鏈代碼優(yōu)化在標(biāo)識(shí)符解析的時(shí)候,查找全局變量是最慢的,所以盡量使用局部變量。
function changeColor(){ var doc=document; doc.getElementById("NM").onclick=function(){ doc.getElementById("AL").style.backgroundColor="red"; }; }
全局變量document的被調(diào)用兩次,查找該變量必須遍歷整個(gè)作用域鏈,耗費(fèi)時(shí)間,可以把它存儲(chǔ)到局部變量里再使用。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/81581.html
摘要:下面,讓我們以一個(gè)函數(shù)的創(chuàng)建和激活兩個(gè)時(shí)期來講解作用域鏈?zhǔn)侨绾蝿?chuàng)建和變化的。這時(shí)候執(zhí)行上下文的作用域鏈,我們命名為至此,作用域鏈創(chuàng)建完畢。 JavaScript深入系列第五篇,講述作用鏈的創(chuàng)建過程,最后結(jié)合著變量對(duì)象,執(zhí)行上下文棧,讓我們一起捋一捋函數(shù)創(chuàng)建和執(zhí)行的過程中到底發(fā)生了什么? 前言 在《JavaScript深入之執(zhí)行上下文棧》中講到,當(dāng)JavaScript代碼執(zhí)行一段可執(zhí)行代...
摘要:作用域作用域是指程序源代碼中定義變量的區(qū)域。采用詞法作用域,也就是靜態(tài)作用域。而與詞法作用域相對(duì)的是動(dòng)態(tài)作用域,函數(shù)的作用域是在函數(shù)調(diào)用的時(shí)候才決定的。前面我們已經(jīng)說了,采用的是靜態(tài)作用域,所以這個(gè)例子的結(jié)果是。 JavaScript深入系列的第二篇,JavaScript采用詞法作用域,什么語言采用了動(dòng)態(tài)作用域??jī)烧叩膮^(qū)別又是什么?還有一個(gè)略難的思考題,快來看看吧。 作用域 作用域是指...
摘要:深入系列第七篇,結(jié)合之前所講的四篇文章,以權(quán)威指南的為例,具體講解當(dāng)函數(shù)執(zhí)行的時(shí)候,執(zhí)行上下文棧變量對(duì)象作用域鏈?zhǔn)侨绾巫兓摹G把栽谏钊胫畧?zhí)行上下文棧中講到,當(dāng)代碼執(zhí)行一段可執(zhí)行代碼時(shí),會(huì)創(chuàng)建對(duì)應(yīng)的執(zhí)行上下文。 JavaScript深入系列第七篇,結(jié)合之前所講的四篇文章,以權(quán)威指南的demo為例,具體講解當(dāng)函數(shù)執(zhí)行的時(shí)候,執(zhí)行上下文棧、變量對(duì)象、作用域鏈?zhǔn)侨绾巫兓摹?前言 在《Jav...
摘要:閉包面試題解由于作用域鏈機(jī)制的影響,閉包只能取得內(nèi)部函數(shù)的最后一個(gè)值,這引起的一個(gè)副作用就是如果內(nèi)部函數(shù)在一個(gè)循環(huán)中,那么變量的值始終為最后一個(gè)值。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第二期,本周的主題是作用域閉包,今天是第8天。 本計(jì)劃一共28期,每期重點(diǎn)攻克一個(gè)面試重難點(diǎn),如果你還不了...
摘要:一作用域域表示的就是范圍,即作用域,就是一個(gè)名字在什么地方可以使用,什么時(shí)候不能使用。概括的說作用域就是一套設(shè)計(jì)良好的規(guī)則來存儲(chǔ)變量,并且之后可以方便地找到這些變量。 一、作用域 域表示的就是范圍,即作用域,就是一個(gè)名字在什么地方可以使用,什么時(shí)候不能使用。想了解更多關(guān)于作用域的問題推薦閱讀《你不知道的JavaScript上卷》第一章(或第一部分),從編譯原理的角度說明什么是作用域。概...
摘要:作用域是門動(dòng)態(tài)語言,跟不一樣,可以隨意定義全局變量和局部變量,變量會(huì)在該作用域下提升,而且沒有塊級(jí)作用域。一預(yù)處理作用域解析的作用域只用兩種,一個(gè)是全局的,一個(gè)是函數(shù)的,也稱為全局作用域和局部作用域局部作用域可以訪問全局作用域。 作用域 JavaScript是門動(dòng)態(tài)語言,跟Java不一樣,JavaScript可以隨意定義全局變量和局部變量,變量會(huì)在該作用域下提升,而且JavaScrip...
閱讀 3570·2023-04-25 16:35
閱讀 715·2021-10-11 11:09
閱讀 6196·2021-09-22 15:11
閱讀 3364·2019-08-30 14:03
閱讀 2604·2019-08-29 16:54
閱讀 3357·2019-08-29 16:34
閱讀 3065·2019-08-29 12:18
閱讀 2134·2019-08-28 18:31