成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

#我的21天#《ES6 標準入門》-D1

LeexMuller / 843人閱讀

摘要:塊級作用域中的塊級作用域很有可能導致局部變量覆蓋全局變量或者局部變量泄露成全局變量。也就是局部變量與全局變量不會打架塊級作用域的出現(xiàn),實際上使得獲得廣泛應用的立即執(zhí)行匿名函數(shù)不再必要了。

letconst命令 1.let 命令

基本用法

語法類似 var,但是所聲明的變量,只在 let 命令所在的代碼塊內有效。

for 循環(huán)中,就非常適合使用 let 聲明變量。

var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6

一般使用 var 來聲明變量 i 的話,輸出的應該是10,但是因為是用 let 聲明的。所以只有在本輪才有效。

先聲明,后使用 (暫時性死區(qū))

let 不像 var那樣會發(fā)生“變量提升”現(xiàn)象。所以,變量一定要在聲明后使用,否則報錯。

ES6明確規(guī)定,如果區(qū)塊中存在 letconst 命令,這個區(qū)塊對這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會報錯。

let不允許在相同作用域內,重復聲明同一個變量。

目的

ES6規(guī)定暫時性死區(qū)和不存在變量提升,主要是為了減少運行時錯誤,防止在變量聲明前就使用這個變量,從而導致意料之外的行為。這樣的錯誤在ES5是很常見的,現(xiàn)在有了這種規(guī)定,避免此類錯誤就很容易了。

2.塊級作用域

ES5中的塊級作用域很有可能導致局部變量覆蓋全局變量或者局部變量泄露成全局變量。

所以使用 let 聲明變量,可以有效的防止上面的兩種情況的產(chǎn)生。從而產(chǎn)生了幾個ES6特有的特點:

ES6允許塊級作用域的任意嵌套。

內層作用域可以定義外層作用域的同名變量。(也就是局部變量與全局變量不會打架)

(*)塊級作用域的出現(xiàn),實際上使得獲得廣泛應用的立即執(zhí)行匿名函數(shù)(IIFE)不再必要了。

(*)函數(shù)本身的作用域,在其所在的塊級作用域之內。

{
  let a = "secret";
  function f() {
    return a;
  }
}
f() // 報錯

上述代碼中,因為f()是在塊級作用域中,所以不能再外部調用。改進方法如下:

let f;
{
  let a = "secret";
  f = function () {
    return a;
  }
}
f() // "secret"

總之要保證f()的作用域范圍。

ES5的嚴格模式規(guī)定,函數(shù)只能在頂層作用域和函數(shù)內聲明,其他情況(比如if代碼塊、循環(huán)代碼塊)的聲明都會報錯。(但是構成區(qū)塊的大括號不能少)

3.const 命令

const 命令也用來聲明變量,但是聲明的是常量。一旦聲明,常量的值就不能改變。(咦我在學C++嗎...)

const 的使用條件與 let相似,也要滿足上面的條件。

4.跨模塊常量
// constants.js 模塊
export const A = 1;
export const B = 3;
export const C = 4;

// test1.js 模塊
import * as constants from "./constants";
console.log(constants.A); // 1
console.log(constants.B); // 3

// test2.js 模塊
import {A, B} from "./constants";
console.log(A); // 1
console.log(B); // 3

(咦,我在學python嗎...)

5.全局對象的屬性

全局對象是最頂層的對象,在瀏覽器環(huán)境指的是window對象,在Node.js指的是global對象。ES5之中,全局對象的屬性全局變量是等價的。

這樣早成的麻煩就是很容易在不知不覺中就創(chuàng)建了全局變量。

所以。ES6規(guī)定:
①var命令和function命令聲明的全局變量,依舊是全局對象的屬性
②let命令、const命令、class命令聲明的全局變量,不屬于全局對象的屬性。

看完第一章趕腳ES6把javascript變得更像一些其他的編程語言如JAVA,C++。著重強調了 塊級作用域。

明天繼續(xù)...

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

轉載請注明本文地址:http://systransis.cn/yun/78839.html

相關文章

  • JavaScript 時間與日期處理實戰(zhàn):你肯定被坑過

    摘要:本文時間與日期處理實戰(zhàn)你肯定被坑過從屬于筆者的前端入門與最佳實踐中入門與最佳實踐系列文章。然而由于地球的不規(guī)則自轉,導致時間有誤差,因此目前已不被當作標準時間使用。而在航空上,所有使用的時間劃一規(guī)定是協(xié)調世界時。 本部分的知識圖譜請參考編程語言知識圖譜-時間與日期。showImg(https://segmentfault.com/img/remote/1460000007581725...

    ninefive 評論0 收藏0
  • D1.Nodejs 入門

    摘要:上下文切換上下文最直觀的表現(xiàn)就是代碼塊中的,通常在面向對象的編程中用到,來指代當前類生成的對應實例,與其他語言的一致。咦,是干嘛的,有沒有其他方式實現(xiàn),請自行谷歌。 分享第一篇,關于 NodeJS —— Javascript 的常用知識以及如何從 Javascript 開發(fā)者過渡到 NodeJS 開發(fā)者(不會介紹具體的框架)。在讀本文前,希望你對 javascript 有一些初步的認識...

    Rango 評論0 收藏0
  • 【重溫基礎】7.時間對象

    摘要:本文是重溫基礎系列文章的第七篇。系列目錄復習資料資料整理個人整理重溫基礎語法和數(shù)據(jù)類型重溫基礎流程控制和錯誤處理重溫基礎循環(huán)和迭代重溫基礎函數(shù)重溫基礎表達式和運算符重溫基礎數(shù)字本章節(jié)復習的是中的時間對象,一些處理的方法。 本文是 重溫基礎 系列文章的第七篇。今日感受:做好自律。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1.語法和數(shù)據(jù)類型...

    YuboonaZhang 評論0 收藏0
  • ES6學習摘要(03)(新人學習)

    摘要:字符的表示法允許采用形式表示一個字符,其中表示字符的碼點。方法,用來將字符的不同表示方法統(tǒng)一為同樣的形式,這稱為正規(guī)化。,默認參數(shù),表示標準等價合成,返回多個簡單字符的合成字符。返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。 ECMAScript6/ES6 入門 let和const命令變量的解構賦值 五、字符串的擴展 注:這章沒什么可以理解的,看過一遍就行,所以大體上我把有用的一些東...

    番茄西紅柿 評論0 收藏0
  • Luxon 初步介紹(Moment 團隊日期另一個類庫)

    摘要:我不是的深度用戶只是日常會遇到一些時間格式化的需求之前用的都是不過對的感到有些不舒服同事介紹過里邊用不可變數(shù)據(jù)的風格設計的所以就試試上星星很多請放心食用是項目的某個維護者開發(fā)的按照他個人想法進行了改進除了不可變性使用的工具做了更新也嘗試到時 我不是 Moment 的深度用戶, 只是日常會遇到一些時間格式化的需求,之前用的都是 Moment, 不過對 Moment 的 mutable A...

    stormzhang 評論0 收藏0

發(fā)表評論

0條評論

LeexMuller

|高級講師

TA的文章

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