摘要:作用域作用域分為全局作用域和局部作用域。相互之間的操作并不影響。這里的相當(dāng)于私有變量,對(duì)于每一個(gè)對(duì)象來(lái)講,也都是不同的。作用域鏈的查找規(guī)則
es5作用域
function test() { var num = 1; if (true) { num = 2; alert(num); // 2 } alert(num); // 2 }
var scope="global"; function t(){ console.log(scope); // undefined,變量提升 var scope="local" console.log(scope); // local } t();
function Test() { var a = 1; this.b = 1; this.show = function() { alert("a=" + a); alert("b=" + this.b); } this.setValue = function() { a = 2; this.b++; } } var obj1 = new Test(); obj1.show(); // a=1,b=1; var obj2 = new Test(); obj2.setValue(); obj2.show(); // a=2,b=2; obj1.show(); // a=1,b=1; 上面的實(shí)例中,a是構(gòu)造函數(shù)內(nèi)部的一個(gè)變量,我們?cè)趯?shí)例化obj1和obj2之后,發(fā)現(xiàn)在實(shí)例化對(duì)象時(shí),obj1和obj2各有一個(gè)作用域,其中的a并不是一份,而是不同的值。相互之間的操作并不影響。這里的a相當(dāng)于私有變量,對(duì)于每一個(gè)對(duì)象來(lái)講,也都是不同的。
(function() { var privateStatic = "privatestatic"; Func = function() { this.setPrivateStatic = function(value) { privateStatic = value; } this.getPrivateStatic = function() { return privateStatic; } } })(); var func1 = new Func(); var func2 = new Func(); console.log(func1.getPrivateStatic()); // privatestatic console.log(func2.getPrivateStatic()); // privatestatic console.log(func1.setPrivateStatic("changed")); console.log(func2.getPrivateStatic()); //changed
(function b() { var c = 1; a(); // c is not defined })() function d() { var c = 2; console.log(c); }; (function b() { var c = 1; d(); // 2 })()js作用域鏈的查找規(guī)則
https://www.cnblogs.com/dolph...
http://www.cnblogs.com/dolphi...
https://www.cnblogs.com/lhb25...
http://www.cnblogs.com/zxj159...
https://www.cnblogs.com/syfwh...
https://www.cnblogs.com/myyou...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/98157.html
摘要:前言這段時(shí)間一直在消化作用域鏈和閉包的相關(guān)知識(shí)。而作用域鏈則是這套規(guī)則這套規(guī)則的具體運(yùn)行。是變量對(duì)象的縮寫(xiě)那這樣放有什么好處呢我們知道作用域鏈保證了當(dāng)前執(zhí)行環(huán)境對(duì)符合訪問(wèn)權(quán)限的變量和函數(shù)的有序訪問(wèn)。 前言:這段時(shí)間一直在消化作用域鏈和閉包的相關(guān)知識(shí)。之前看《JS高程》和一些技術(shù)博客,對(duì)于這些概念的論述多多少少不太清楚或者不太完整,包括一些大神的技術(shù)文章。這也給我的學(xué)習(xí)上造成了一些困惑,...
摘要:本期推薦文章從作用域鏈談閉包,由于微信不能訪問(wèn)外鏈,點(diǎn)擊閱讀原文就可以啦。推薦理由這是一篇譯文,深入淺出圖解作用域鏈,一步步深入介紹閉包。作用域鏈的頂端是全局對(duì)象,在全局環(huán)境中定義的變量就會(huì)綁定到全局對(duì)象中。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周開(kāi)始前端進(jìn)階的第二期,本周的主題是作用域閉包,今天是第6天。 本...
摘要:在此例中,在匿名函數(shù)被返回后,它的作用域鏈初始化為包含函數(shù)的活動(dòng)對(duì)象和全局變量對(duì)象。函數(shù)在執(zhí)行完畢后,其活動(dòng)對(duì)象也不會(huì)被銷(xiāo)毀,因?yàn)槟涿瘮?shù)的作用域鏈仍然在引用這個(gè)活動(dòng)對(duì)象,結(jié)果就是只是的執(zhí)行環(huán)境的作用域鏈會(huì)被銷(xiāo)毀,其活動(dòng)對(duì)象會(huì)留在內(nèi)存中。 寫(xiě)在前面 注:這個(gè)系列是本人對(duì)js知識(shí)的一些梳理,其中不少內(nèi)容來(lái)自書(shū)籍:Javascript高級(jí)程序設(shè)計(jì)第三版和JavaScript權(quán)威指南第六版,...
摘要:變量對(duì)象也是有父作用域的。作用域鏈的頂端是全局對(duì)象。當(dāng)函數(shù)被調(diào)用的時(shí)候,作用域鏈就會(huì)包含多個(gè)作用域?qū)ο蟆.?dāng)函數(shù)要訪問(wèn)時(shí),沒(méi)有找到,于是沿著作用域鏈向上查找,在的作用域找到了對(duì)應(yīng)的標(biāo)示符,就會(huì)修改的值。 一、概要 對(duì)于閉包的定義(紅寶書(shū)P178):閉包就是指有權(quán)訪問(wèn)另外一個(gè)函數(shù)的作用域中的變量的函數(shù)。 關(guān)鍵點(diǎn): 1、閉包是一個(gè)函數(shù) 2、能夠訪問(wèn)另外一個(gè)函數(shù)作用域中的變量 二、閉包特性 對(duì)...
摘要:所以,當(dāng)在函數(shù)中使用全局變量的時(shí)候,所產(chǎn)生的代價(jià)是最大的,因?yàn)槿謱?duì)象一直處于作用域鏈的最末位置,讀取局部變量是最快的。 什么是作用域 在編程語(yǔ)言中,作用域控制著變量與參數(shù)的可見(jiàn)性及生命周期,它能減少名稱(chēng)沖突,而且提供了自動(dòng)內(nèi)存管理(javascript 語(yǔ)言精粹) 靜態(tài)作用域 再者,js不像其他的編程語(yǔ)言一樣,擁有著塊級(jí)作用域,就像下面一段代碼。 function afunction...
閱讀 2997·2021-11-25 09:43
閱讀 3642·2021-08-31 09:41
閱讀 1258·2019-08-30 15:56
閱讀 2149·2019-08-30 15:55
閱讀 3009·2019-08-30 13:48
閱讀 2824·2019-08-29 15:15
閱讀 995·2019-08-29 15:14
閱讀 2665·2019-08-28 18:26