1. 程式人生 > >ES6學習筆記(一)(整理阮一峰大神入門)

ES6學習筆記(一)(整理阮一峰大神入門)

一、ES6宣告變數的六種方法

ES5 只有兩種宣告變數的方法:var命令和function命令。ES6除了新增letconst命令,另外兩種宣告變數的方法:import命令和class命令。所以,ES6 一共有6種宣告變數的方法。

1、let變數在程式碼塊中有效。比如用for迴圈計數器,就很適合用let變數。

2、var命令會發生”變數提升“現象,即變數可以在宣告之前使用,值為undefined。這種現象多多少少是有些奇怪的,按照一般的邏輯,變數應該在宣告語句之後才可以使用。為了糾正這種現象,let命令改變了語法行為,它所宣告的變數一定要在聲明後使用,否則報錯。

3、typeof將不再安全。在程式碼塊內,使用

let命令宣告變數之前,該變數都是不可用的。這在語法上,稱為“暫時性死區”(temporal dead zone,簡稱 TDZ)。“暫時性死區”也意味著typeof不再是一個百分之百安全的操作。變數x使用let命令宣告,所以在宣告之前,都屬於x的“死區”,只要用到該變數就會報錯。因此,typeof執行時就會丟擲一個ReferenceError

二、塊級作用域

1、es5和es6比較:es5 只有全域性作用域和函式作用域,沒有塊級作用域。

2、let實際上為javascript新增了塊級作用域

3、es6 允許塊級作用域的任意巢狀。

4、es5規定函式只能在頂層作用域和函式作用域之中宣告,不能在塊級作用域宣告,嚴格模式下會報錯。為ES5和es6環境避免報錯,應不要在塊級作用域裡宣告函式。

三、const命令

1、const宣告一個只讀的常量。一旦宣告,常量的值就不能改變。

2、const的作用域與let命令相同:只在宣告所在的塊級作用域內有效。

3、const命令宣告的常量也是不提升,同樣存在暫時性死區,只能在宣告的位置後面使用

4、對於複合型別的變數,變數名不指向資料,而是指向資料所在的地址。const命令只是保證變數名指向的地址不變,並不保證該地址的資料不變,所以將一個物件宣告為常量必須非常小心。

const foo = {};

// 為 foo 新增一個屬性,可以成功
foo.prop = 123;
foo.prop // 123

// 將 foo 指向另一個物件,就會報錯
foo = {}; // TypeError: "foo" is read-only



相關推薦

ES6學習筆記整理入門

一、ES6宣告變數的六種方法 ES5 只有兩種宣告變數的方法:var命令和function命令。ES6除了新增let和const命令,另外兩種宣告變數的方法:import命令和class命令。所以,E

ES6學習筆記01 -- 暫時性死區 temporal dead zone

參考文件:  let 和 const 命令 - ECMAScript6入門         暫時性死區(temporal dead zone)        理解ES6中的TDZ(暫時性死區)        ES6 中 let 暫時性死區詳解 注:文中程式碼僅作示意,複製執行時需要適當調整

ES6學習筆記——擴展運算符和解構賦值

st3 com 布爾 nts 實參 之前 script hello let 前言 隨著前端工程化的快速推進,在項目中使用ES6甚至更高的ES7等最近特性早已不是什麽新鮮事。之前還覺得既然瀏覽器支持有限,那了解一下能看懂就好,然而僅僅了解還是不夠的,現在放眼望去,那些成熟框架

ES6學習筆記——字串的擴充套件

預備知識 utf-16:把Unicode字符集的抽象碼位對映為16位長的整數(即碼元)的序列,Unicode字元的碼位,需要1個或2個16位的碼元來表示。 utf-32:使用32個位元對每個Unicode碼位進行編碼,編碼長度是固定的,即32位。 js

ES6學習筆記新的變量定義命令let和const

undefined object 這樣的 保存 全局對象 mic 變量 tps != 1.一些歷史 ES6(ECMAScript 6.0)是 JavaScript 語言的新一代標準,於2015 年 6 月正式發布,距今已經4年了,它的目標,是使得 JavaScript 語

JavaSE 學習筆記之Java概述

environ 電子 6.0 run javase 有一點 架構 spa form 一、Java的三種技術架構: JAVAEE:Java Platform Enterprise Edition,開發企業環境下的應用程序,主要針對web程序開發; JAVASE:Java P

ES6學習筆記—— async 函數

ons fst cte code span pre getname 普通 聲明 await 是 async wait 的簡寫, 是 generator 函數的語法糖。 async 函數的特點: async 聲明一個方法是異步的,await 則等待這個異步方法執行的完

HTML學習筆記 w3sCss盒子模型應用 第十原創

.com foo margin images href ack har htm com <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &l

設計模式學習筆記 C#代碼

內容 編程 繼承 color 模式 c# 派生類 ive spa 《深入淺出設計模式》學習筆記第一章 原始需求和設計 事情是這樣開始的,公司需要做一套程序,鴨子,設計如下: 一個鴨子父類,多個派生類,三個可override的方法。 第一次需求變更 我們要會飛的鴨子!!!!

FPGA軟硬協同設計學習筆記及基礎知識

擴展性 產生 新的 pll 多個 分配 每次 調用 span 一、FPGA軟件硬件協同定義: 軟件:一般以軟件語言來描述,類似ARM處理器的嵌入式設計。硬件定義如FPGA,裏面資源有限但可重配置性有許多優點,新的有動態可充配置技術。

多線程編程學習筆記——線程同步

als 執行 homepage auto using 發的 進行 read 函數 接上文 多線程編程學習筆記-基礎(一) 接上文 多線程編程學習筆記-基礎(二) 接上文 多線程編程學習筆記-基礎(三) 就如上一篇文章(多線程編程學習筆記-基礎(三))

matlab學習筆記之常用命令

plot 我們 all 查看 學習 ear tla clear 但是 一.清除命令。   1.clear all;%清除所有變量,通常在matlab的工作區;另外斷點也會被清除掉   2.close all;%關閉所有窗口(除了編輯器窗口、命令窗口、幫助窗口)   3.cl

python學習筆記 day44 mysql練習題

習題來自: http://www.cnblogs.com/wangfengming/articles/7944029.html   1. 習題內容: 1.建立留言資料庫: liuyandb; 2.在liuyandb資料庫中建立留言表liuyan,結構如下: 3.在留言表最後新

J2SE學習筆記1.11Java介面

一、基本概念 介面(Interface),在JAVA程式語言中是一個抽象型別,是抽象方法的集合。介面通常以interface來宣告。一個類通過繼承介面的方式,從而來繼承介面的抽象方法。 如果一個類只由抽象方法和全域性常量組成,那麼這種情況下不會將其定義為一個抽象類。只會定

ES6學習筆記

看網上一些ES6相關資料,來學習ES6,記錄下其間學習的筆記,以及一些疑惑,供後期自己方便查閱,未解決疑問以後懂了再加上…… ES6學習筆記(一)相關內容:作用域、let命令、const命令 一、作用域的概念 ES6之前,有 全域性作用域 和 函式作用域 到了E

es6學習筆記

Symbol原始資料型別 1. 概述 ES6 引入的一種新的原始資料型別Symbol,表示獨一無二的值。let s = Symbol(); typeof s; //'symbol' Symbol函式可以接受一個字串作為引數,表示對 Symbol 例項的描述,主要是

es6學習筆記

陣列的擴充套件 1. 擴充套件運算子三個點(…),可以展開陣列 console.log(...[1, 2, 3]);// 1 2 3 console.log(1, ...[2, 3, 4], 5); // 1 2 3 4 5 [...document.querySelectorAl

es6學習筆記

數值的擴充套件 新增方法 ES6 提供了二進位制和八進位制數值的新的寫法,分別用字首0b(或0B)和0o(或0O)表示。0b111110111 === 503 // true 0o767 === 503 // true //如果要將0b和0o字首的字串數值轉為十進位制,要使

linux學習筆記之shell程式設計

shell程式設計 基礎正則表示式 正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式 ####正則

linux學習筆記之流程控制if分支語句

流程控制 if語句 單分支if語句 程式 fi``` ```if [ 判斷 ] then 程式 fi``` 例項程式碼指令碼: #!/bin/bash