摘要:但是對于復雜類型的數(shù)據(jù)數(shù)組對象,保存的是一個指針,真正的數(shù)據(jù)是存儲在堆區(qū),只能保證這個指針不會變化,不能保證里面的數(shù)據(jù)不發(fā)生變化的變量聲明方式在中聲明的全局變量是和頂層對象的屬性對等的獲取全局對象的方法
你可能不知道的let與const let
var聲明的變量會發(fā)生變量提升,在var聲明之前調(diào)用該變量會數(shù)處undefined,但是let聲明的變量不會發(fā)生提升,在聲明之前調(diào)用就會報錯
// var 的情況 console.log(foo); // 輸出undefined var foo = 2; // let 的情況 console.log(bar); // 報錯ReferenceError let bar = 2;
let不允許在相同的作用域內(nèi)聲明相同的變量否則會報錯
// 報錯 function func() { let a = 10; var a = 1; }
塊級作用于有以下兩個用處
內(nèi)層變量覆蓋外層變量
var tmp = new Date(); function f() { console.log(tmp); if (false) { var tmp = "hello world"; // 這里會發(fā)生變量提升 } } f(); // undefined
用來計數(shù)的循環(huán)變量泄露為全局變量
var s = "hello"; for (var i = 0; i < s.length; i++) { console.log(s[i]); } console.log(i); // 5
允許在塊級作用域內(nèi)聲明函數(shù)(es6規(guī)定的在嚴格模式下只有在{}內(nèi)部才可以聲明函數(shù))
函數(shù)聲明類似于var,即會提升到全局作用域或函數(shù)作用域的頭部。
同時,函數(shù)聲明還會提升到所在的塊級作用域的頭部,優(yōu)先于變量的聲明
funtion fun(){}; var fun; // 這里不管先聲明誰fun輸出的永遠都是函數(shù) fun //f fun(){}const
const聲明的常量聲明就必須初始化也就是必須賦值,否則就會報錯(若是定義引用類型數(shù)據(jù)則可以改變并不會報錯)
const obj = {a:{b:2}} a.b=3 obj // {a:{b:3}}
同let聲明的變量一樣,const不能重復聲明同一變量,同時const也是塊級作用域
小結(jié)與擴展const保證的實際上并不是變量的值不可改變,而是指變量存放的地址不可改變,對于簡單的數(shù)據(jù)類型(數(shù)字,字符串,boolean)值就保存在變量指向的那個地址(棧區(qū)),所以是不可改變的。
但是對于復雜類型的數(shù)據(jù)(數(shù)組、對象),保存的是一個指針,真正的數(shù)據(jù)是存儲在堆區(qū),只能保證這個指針不會變化,不能保證里面的數(shù)據(jù)不發(fā)生變化
es6的變量聲明方式:var function let const import export
在es5中聲明的全局變量是和頂層對象的屬性對等的
獲取全局對象的方法
var getGlobal = function () { if (typeof self !== "undefined") { return self; } if (typeof window !== "undefined") { return window; } if (typeof global !== "undefined") { return global; } throw new Error("unable to locate global object"); };
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90770.html
摘要:模塊就是對象,輸入時必須查找對象屬性模塊不是對象,而是通過命令顯式指定輸出的代碼,再通過命令輸入。大括號里面的變量名,必須與被導入模塊對外接口的名稱相同。 proxy代理的坑 var obj = {index:index} var newObj = new Proxy(obj,{ get:(target,key)=>{ console.l...
摘要:變量的解構(gòu)賦值結(jié)構(gòu)賦值允許使用默認值內(nèi)部使用嚴格相等運算符,判斷一個位置是否有值。所以,只有當一個數(shù)組成員嚴格等于,默認值才會生效。這樣的層層判斷非常麻煩,因此現(xiàn)在有一個提案,引入了傳導運算符,簡化上面的寫法。 變量的解構(gòu)賦值 結(jié)構(gòu)賦值允許使用默認值 let [foo = true] = []; foo // true ES6 內(nèi)部使用嚴格相等運算符(===),判斷一個位置是否...
摘要:今天,其實講的是在實現(xiàn)同構(gòu)過程中看到過,可能非常容易被忽視更小的一個點。每一個架構(gòu)的框架都會涉及到層的展現(xiàn),也不例外。這種說法即對也不對??偨Y(jié)其實,實現(xiàn)非常簡單,我們也從一些維度看到了設(shè)計一個的一般方法。 在之前我們有過一篇『React 同構(gòu)實踐與思考』的專欄文章,給讀者實踐了用 React 怎么實現(xiàn)同構(gòu)。今天,其實講的是在實現(xiàn)同構(gòu)過程中看到過,可能非常容易被忽視更小的一個點 —— R...
摘要:年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會興起,哪些技術(shù)會沒落。自從谷歌提出后,就持續(xù)的獲得了業(yè)界的關(guān)注,熱度可見一斑。就在今年,谷歌也宣布將獲得與安卓原生應用同等的待遇與權(quán)限。但是無論都值得關(guān)注。 1.前言 2017悄然過去,2018已經(jīng)來到。人在進步,技術(shù)在發(fā)展。2018年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會興起,哪些技術(shù)會沒落。下面就我個人的判斷進行一個預測判斷,希望能對大家...
摘要:年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會興起,哪些技術(shù)會沒落。自從谷歌提出后,就持續(xù)的獲得了業(yè)界的關(guān)注,熱度可見一斑。就在今年,谷歌也宣布將獲得與安卓原生應用同等的待遇與權(quán)限。但是無論都值得關(guān)注。 1.前言 2017悄然過去,2018已經(jīng)來到。人在進步,技術(shù)在發(fā)展。2018年前端有哪些領(lǐng)域,技術(shù)值得關(guān)注,哪些技術(shù)會興起,哪些技術(shù)會沒落。下面就我個人的判斷進行一個預測判斷,希望能對大家...
閱讀 3060·2021-10-12 10:12
閱讀 5394·2021-09-26 10:20
閱讀 1527·2021-07-26 23:38
閱讀 2817·2019-08-30 15:54
閱讀 1649·2019-08-30 13:45
閱讀 1968·2019-08-30 11:23
閱讀 3092·2019-08-29 13:49
閱讀 836·2019-08-26 18:23