成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

ES2015入門系列2-let和const

godiscoder / 1733人閱讀

摘要:新增了兩個(gè)變量修飾關(guān)鍵字它們都是塊級(jí)別的,那什么是塊簡(jiǎn)單的來(lái)說(shuō),塊就是一組花括號(hào)中間的部分。全局變量使用基本上可以不用了

ES2015 新增了兩個(gè)變量修飾關(guān)鍵字:

let

const

它們都是塊級(jí)別的,那什么是塊?簡(jiǎn)單的來(lái)說(shuō),塊就是一組花括號(hào)中間的部分。

Var

為了理解let我們先從var說(shuō)起,如下代碼:

function checkStatus(status) {
  if (status) {
    var statusLabel = "ok";
    console.log(statusLabel);
  } else {
    console.log(statusLabel);
  }
}
checkStatus(true);
checkStatus(false);

在 Chrome Console 中運(yùn)行后,獲得結(jié)果:

ok
undefined

我們?cè)趂alse條件中加入一行代碼:

function checkStatus(status) {
  if (status) {
    var statusLabel = "ok";
    console.log(statusLabel);
  } else {
    console.log(statusLabel);
    console.log(abc);//執(zhí)行后會(huì)輸出: Uncaught ReferenceError: abc is not defined(…)
  }
}
checkStatus(true);
checkStatus(false);

對(duì)于初次接觸JavaScript的后端程序員來(lái)說(shuō),會(huì)覺(jué)得非常奇怪,在傳入false的時(shí)候?yàn)槭裁吹玫降膕tatusLabel是undefined而不是變量未定義?而嘗試輸出abc就能得到變量未定義的錯(cuò)誤呢?

這是因?yàn)樵贘avaScript中使用var定義的變量會(huì)被預(yù)先提升到作用域最開(kāi)始的地方(這里就是這個(gè)function), 在這個(gè)例子中也就是if位置的上面, 代碼就可以寫(xiě)成:

function checkStatus(status) {
  var statusLabel;
  if (status) {
    statusLabel = "ok";
    console.log(statusLabel);
  } else {
    console.log(statusLabel);
  }
}

這是JavaScript獨(dú)有的, 所以之前定義變量的好的習(xí)慣就是在所有可能會(huì)使用的地方之前定義好,如此,才不會(huì)產(chǎn)生各種奇怪奇怪的問(wèn)題。

Let

let就是新的 var,和var不同的是它是塊級(jí)的,將上面的代碼中的var換成let

function checkStatus(status) {
  if (status) {
    let statusLabel = "ok";
    console.log(statusLabel);
  } else {
    console.log(statusLabel);
  }
}
checkStatus(true);
checkStatus(false);

這樣的到的結(jié)果就是我們?cè)O(shè)想的,true的時(shí)候是ok, false的時(shí)候拋出變量不存在的錯(cuò)誤,如果false的時(shí)候想要輸出undefined, 那么就要手動(dòng)定義在 if 的上面:

function checkStatus(status) {
  let statusLabel;
  if (status) {
    statusLabel = "ok"
    console.log(statusLabel);
  } else {
    console.log(statusLabel);
  }
}
checkStatus(true);
checkStatus(false);

const

const 和 let 一樣是塊級(jí), 從名字上看是用來(lái)常量的,其實(shí)不然,正確的說(shuō)法是 single-assignment, 也就是說(shuō)只能對(duì)其進(jìn)行一次賦值并且只能在定義的時(shí)候賦值,后面如果再想對(duì)其進(jìn)行賦值操作就會(huì)報(bào)錯(cuò)。

const PI = 3.1415926;
PI = 2.0; //報(bào)錯(cuò),Uncaught TypeError: Assignment to constant variable.

但是,這不代表const定義的就不可以改變的(immutable), 如下代碼:

const animals = ["rabbit", "monkey"];
console.log(animals); //["rabbit", "monkey"]
animals.push("donkey");
console.log(animals);//["rabbit", "monkey", "donkey"]
animals = ["bird"]; //報(bào)錯(cuò),Uncaught TypeError: Assignment to constant variable.

那如何決定該使用哪種關(guān)鍵詞呢?

這個(gè)目前社區(qū)沒(méi)有統(tǒng)一的規(guī)范,不過(guò)本人比較喜歡下面這種,即:

優(yōu)先使用let

常量用const, 如常規(guī)常量, 導(dǎo)入的模塊等等。

全局變量使用var (基本上可以不用了?)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/83731.html

相關(guān)文章

  • es6快速入門

    摘要:快速入門簡(jiǎn)介以下簡(jiǎn)稱是語(yǔ)言的下一代標(biāo)準(zhǔn),已經(jīng)在年月正式發(fā)布了。而且聲明后必須立即初始化賦值,不能后面賦值。方法默認(rèn)返回實(shí)例對(duì)象即,可以指定返回另外一個(gè)對(duì)象。參數(shù)搭配的變量是一個(gè)數(shù)組,該變量將多余的參數(shù)放入數(shù)組中。 es6快速入門 showImg(https://segmentfault.com/img/remote/1460000008519223?w=560&h=314); ES6簡(jiǎn)...

    liujs 評(píng)論0 收藏0
  • ES2015入門系列5-解構(gòu)賦值

    摘要:用過(guò)的同學(xué)肯定見(jiàn)過(guò)類似下面的代碼這就是為帶來(lái)的另一個(gè)新的語(yǔ)法解構(gòu)賦值。解構(gòu)賦值是用來(lái)讓我們從數(shù)組或者對(duì)象中提取數(shù)據(jù)賦值給不同的變量。解構(gòu)賦值操作不會(huì)拋錯(cuò),如果沒(méi)有找到,將會(huì)用賦值過(guò)去。 用過(guò)ReactNative的同學(xué)肯定見(jiàn)過(guò)類似下面的代碼: import { Text, View } from react-native; 這就是ES2015為JavaScript帶來(lái)的另一個(gè)新的語(yǔ)法:...

    chuyao 評(píng)論0 收藏0
  • [ ES6 ] 快速掌握常用 ES6 (一)

    摘要:常量變量先說(shuō)說(shuō)常量和變量的概念吧,常量是說(shuō)那種進(jìn)行一次賦值后不會(huì)更改的值,比如說(shuō)游戲賬戶的,變量是說(shuō)賦值后有更改的需求的,比如游戲名,游戲密碼。常用實(shí)例交換變量的值提取數(shù)據(jù)解構(gòu)賦值對(duì)提取對(duì)象中的數(shù)據(jù),尤其有用。 本系列文章適合快速掌握 ES6 入門語(yǔ)法,想深入學(xué)習(xí) ES6 的小伙伴可以看看阮一峰老師的《ECMAScript 6 入門》 學(xué)習(xí) 20% 的知識(shí)完成 80% 的工作 關(guān)于 ...

    ispring 評(píng)論0 收藏0
  • 2017-06-29 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選如何在非項(xiàng)目中使用知乎專欄編碼規(guī)范最常被遺忘的性能優(yōu)化瀏覽器緩存?zhèn)€人文章譯統(tǒng)一樣式語(yǔ)言掘金新的開(kāi)發(fā)者提及最多的個(gè)視頻眾成翻譯中文第期在中使用譯統(tǒng)一樣式語(yǔ)言掘金前端現(xiàn)狀答題救不了前端新人相學(xué)長(zhǎng)懟前端歲以 2017-06-29 前端日?qǐng)?bào) 精選 如何在非 React 項(xiàng)目中使用 Redux - 知乎專欄Javascript編碼規(guī)范 - Clearlove - SegmentFau...

    gaosboy 評(píng)論0 收藏0
  • 帶你入門 JavaScript ES6 (一)

    摘要:是國(guó)際組織于年月日發(fā)布的第六版,正式名為通常被成為或。二模版字面量提供一種簡(jiǎn)單實(shí)現(xiàn)表達(dá)式嵌套的字符串字面量操作,簡(jiǎn)而言之就是能夠以簡(jiǎn)單的方法實(shí)現(xiàn)字符串拼接操作。 本文同步 帶你入門 JavaScript ES6 (一),轉(zhuǎn)載請(qǐng)注明出處。 ES6: 是 ECMA國(guó)際組織于 2015 年 6 月 17 日發(fā)布的 ECMAScript 第六版,正式名為 ECMAScript 2015,通常被...

    lindroid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<