国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

es6中容易忽視的細節(一)

baishancloud / 1739人閱讀

摘要:但是對于復雜類型的數據數組對象,保存的是一個指針,真正的數據是存儲在堆區,只能保證這個指針不會變化,不能保證里面的數據不發生變化的變量聲明方式在中聲明的全局變量是和頂層對象的屬性對等的獲取全局對象的方法

你可能不知道的let與const let

var聲明的變量會發生變量提升,在var聲明之前調用該變量會數處undefined,但是let聲明的變量不會發生提升,在聲明之前調用就會報錯

// var 的情況
console.log(foo); // 輸出undefined
var foo = 2;

// let 的情況
console.log(bar); // 報錯ReferenceError
let bar = 2;

let不允許在相同的作用域內聲明相同的變量否則會報錯

 // 報錯
function func() {
  let a = 10;
  var a = 1;
}

塊級作用于有以下兩個用處
內層變量覆蓋外層變量

var tmp = new Date();  

function f() {
  console.log(tmp);
  if (false) {
    var tmp = "hello world"; // 這里會發生變量提升
  }
}

f(); // undefined

用來計數的循環變量泄露為全局變量

var s = "hello";

for (var i = 0; i < s.length; i++) {
  console.log(s[i]);
}

console.log(i); // 5

函數聲明與變量聲明的潛規則

允許在塊級作用域內聲明函數(es6規定的在嚴格模式下只有在{}內部才可以聲明函數)

函數聲明類似于var,即會提升到全局作用域或函數作用域的頭部。

同時,函數聲明還會提升到所在的塊級作用域的頭部,優先于變量的聲明

funtion fun(){};
var fun;   // 這里不管先聲明誰fun輸出的永遠都是函數
fun  //f fun(){}

const

const聲明的常量聲明就必須初始化也就是必須賦值,否則就會報錯(若是定義引用類型數據則可以改變并不會報錯)

const obj = {a:{b:2}}
a.b=3
obj    // {a:{b:3}}

同let聲明的變量一樣,const不能重復聲明同一變量,同時const也是塊級作用域

小結與擴展

const保證的實際上并不是變量的值不可改變,而是指變量存放的地址不可改變,對于簡單的數據類型(數字,字符串,boolean)值就保存在變量指向的那個地址(棧區),所以是不可改變的。

但是對于復雜類型的數據(數組、對象),保存的是一個指針,真正的數據是存儲在堆區,只能保證這個指針不會變化,不能保證里面的數據不發生變化

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");
};

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90770.html

相關文章

  • es6容易忽視細節(三)

    摘要:模塊就是對象,輸入時必須查找對象屬性模塊不是對象,而是通過命令顯式指定輸出的代碼,再通過命令輸入。大括號里面的變量名,必須與被導入模塊對外接口的名稱相同。 proxy代理的坑 var obj = {index:index} var newObj = new Proxy(obj,{ get:(target,key)=>{ console.l...

    Michael_Lin 評論0 收藏0
  • es6容易忽視細節(二)

    摘要:變量的解構賦值結構賦值允許使用默認值內部使用嚴格相等運算符,判斷一個位置是否有值。所以,只有當一個數組成員嚴格等于,默認值才會生效。這樣的層層判斷非常麻煩,因此現在有一個提案,引入了傳導運算符,簡化上面的寫法。 變量的解構賦值 結構賦值允許使用默認值 let [foo = true] = []; foo // true ES6 內部使用嚴格相等運算符(===),判斷一個位置是否...

    RayKr 評論0 收藏0
  • koa 實現 react-view 原理

    摘要:今天,其實講的是在實現同構過程中看到過,可能非常容易被忽視更小的一個點。每一個架構的框架都會涉及到層的展現,也不例外。這種說法即對也不對??偨Y其實,實現非常簡單,我們也從一些維度看到了設計一個的一般方法。 在之前我們有過一篇『React 同構實踐與思考』的專欄文章,給讀者實踐了用 React 怎么實現同構。今天,其實講的是在實現同構過程中看到過,可能非常容易被忽視更小的一個點 —— R...

    zxhaaa 評論0 收藏0
  • 2018前端值得關注技術

    摘要:年前端有哪些領域,技術值得關注,哪些技術會興起,哪些技術會沒落。自從谷歌提出后,就持續的獲得了業界的關注,熱度可見一斑。就在今年,谷歌也宣布將獲得與安卓原生應用同等的待遇與權限。但是無論都值得關注。 1.前言 2017悄然過去,2018已經來到。人在進步,技術在發展。2018年前端有哪些領域,技術值得關注,哪些技術會興起,哪些技術會沒落。下面就我個人的判斷進行一個預測判斷,希望能對大家...

    xiao7cn 評論0 收藏0
  • 2018前端值得關注技術

    摘要:年前端有哪些領域,技術值得關注,哪些技術會興起,哪些技術會沒落。自從谷歌提出后,就持續的獲得了業界的關注,熱度可見一斑。就在今年,谷歌也宣布將獲得與安卓原生應用同等的待遇與權限。但是無論都值得關注。 1.前言 2017悄然過去,2018已經來到。人在進步,技術在發展。2018年前端有哪些領域,技術值得關注,哪些技術會興起,哪些技術會沒落。下面就我個人的判斷進行一個預測判斷,希望能對大家...

    用戶84 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<