摘要:靜態(tài)作用域指的是一段代碼,在它執(zhí)行之前就已經(jīng)確定了它的作用域,簡單來說就是在執(zhí)行之前就確定了它可以應(yīng)用哪些地方的作用域變量。
靜態(tài)作用域指的是一段代碼,在它執(zhí)行之前就已經(jīng)確定了它的作用域,簡單來說就是在執(zhí)行之前就確定了它可以應(yīng)用哪些地方的作用域(變量)。
動態(tài)作用域–函數(shù)的作用域是在函數(shù)調(diào)用的時(shí)候才決定的
JavaScript采用的是詞法作用域即靜態(tài)作用域;
// 靜態(tài)作用域: var a = 10; function fn() { var b = 1; console.log(a + b); } fn(); // 11
在創(chuàng)建fn函數(shù)時(shí)的時(shí)候就已經(jīng)確定了它可以作用哪些變量,如果函數(shù)fn里面有變量a就直接操作變量a,
如果沒有就往上一級查找,這就是靜態(tài)作用域
// 動態(tài)作用域: function foo() { console.log(a); } function bar() { var a = 3; foo(); } var a = 2; bar(); // 2;
bar 調(diào)用,bar里面foo被調(diào)用,foo函數(shù)需要查找變量a,由于JavaScript是詞法作用域(即靜態(tài)作用域),foo被解析時(shí)在全局作用域.
所以只能在全局作用域中找a,輸出結(jié)果為2,而非bar作用域中的a。如果js采用的時(shí)動態(tài)作用域,那么foo在bar中調(diào)用,就會先在bar中查詢a,輸出為3。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104762.html
摘要:在中的應(yīng)用采用詞法作用域,也就是靜態(tài)作用域。那什么又是詞法作用域或者靜態(tài)作用域呢請繼續(xù)往下看靜態(tài)作用域與動態(tài)作用域因?yàn)椴捎玫氖窃~法作用域函數(shù)的作用域在函數(shù)定義的時(shí)候就決定了。 開篇 當(dāng)我們在開始學(xué)習(xí)任何一門語言的時(shí)候,都會接觸到變量的概念,變量的出現(xiàn)其實(shí)是為了解決一個(gè)問題,為的是存儲某些值,進(jìn)而,存儲某些值的目的是為了在之后對這個(gè)值進(jìn)行訪問或者修改,正是這種存儲和訪問變量的能力將狀態(tài)給...
摘要:作用域作用域是指程序源代碼中定義變量的區(qū)域。采用詞法作用域,也就是靜態(tài)作用域。而與詞法作用域相對的是動態(tài)作用域,函數(shù)的作用域是在函數(shù)調(diào)用的時(shí)候才決定的。前面我們已經(jīng)說了,采用的是靜態(tài)作用域,所以這個(gè)例子的結(jié)果是。 JavaScript深入系列的第二篇,JavaScript采用詞法作用域,什么語言采用了動態(tài)作用域?兩者的區(qū)別又是什么?還有一個(gè)略難的思考題,快來看看吧。 作用域 作用域是指...
摘要:總結(jié)總而言之,作用域在語法分析時(shí)就已經(jīng)處理完啦,的作用域是靜態(tài)作用域,在運(yùn)行時(shí)只是上下文對象在一直發(fā)生變化。 JavaScript 的作用域和上下文對象this 從幾個(gè)有意思的js問題開始 為什么輸出的不是f2? `var scope = top; var f1 = function() { console.log(scope); }; f1(); //...
摘要:在代碼執(zhí)行時(shí),對應(yīng)的作用域鏈常常是保持靜態(tài)的。當(dāng)語句執(zhí)行完畢后,會把作用域鏈恢復(fù)到原始狀態(tài)。在全局作用域中創(chuàng)建的函數(shù),其作用域鏈會自動成為全局作用域中的一員。 列表項(xiàng)目 前言 學(xué)習(xí)了javascript已經(jīng)很久了,關(guān)于這個(gè)語言中的這兩個(gè)特性也是早已耳熟能詳,但是在實(shí)際的使用的過程中或者是遇到相關(guān)的問題的時(shí)候,還是不能很好的解決。因此我覺得很有必要深入的學(xué)習(xí)并且記錄這個(gè)問題,以便在今后的...
摘要:作用域的類別可以影響到變量的取值,分為詞法作用域靜態(tài)作用域和動態(tài)作用域。而,采用的就是詞法作用域,或者叫靜態(tài)作用域。 關(guān)于javascript中的作用域和作用域鏈 我GitHub上的菜鳥倉庫地址: 點(diǎn)擊跳轉(zhuǎn)查看其他相關(guān)文章 文章在我的博客上的地址: 點(diǎn)擊跳轉(zhuǎn) ? ? ? ? 前面的文章說到, 執(zhí)行上下文的創(chuàng)建階段,主要有三個(gè)內(nèi)容: ? ? ? ? 1、創(chuàng)建變量對象;2、初始化作用域...
閱讀 701·2023-04-25 19:53
閱讀 4295·2021-09-22 15:13
閱讀 2578·2019-08-30 10:56
閱讀 1335·2019-08-29 16:27
閱讀 2946·2019-08-29 14:00
閱讀 2424·2019-08-26 13:56
閱讀 447·2019-08-26 13:29
閱讀 1625·2019-08-26 11:31