es6語法學習 1

2021-08-02 23:10:39 字數 3994 閱讀 1459

學習es56語法

1、塊級作用於

用 let來來代替之前 由於var塊級作用於,變數洩漏的問題

let宣告變數,只在當前塊級作用域中有效

對於沒有宣告的變數,先使用,再用let宣告則會報錯

塊級作用域中相同變數名不允許重複宣告

可以任意巢狀

es5中塊級作用域中,內部的作用域函式可以在外部沒有此變數或者函式的時候得到提公升,

稱為函式提公升(目的是為了相容瀏覽器)

在es6瀏覽器環境中,可以按照函式提公升規則

在es6其他環境中,則會報錯,不會將內部函式或者變數進行作用域提公升

es6塊級作用域宣告函式,僅限 函式在大括號包圍函式的情況下,才成立

最好將函式寫成 表示式 let f = function(){};比較好,放在塊級作用域中

do;則可以返回表示式的值

const 常量,當用const宣告物件,只是保證物件記憶體位址不變,但是內容可以變

es6 有 let const var function import class 六種宣告變數方法

global頂層物件,

2、變數的解構賦值

let [x,y,z] =[1,2,3];讓左邊值等於右邊值,如果兩部個數不匹配,則左邊有的值可能為undefined

注意左右格式解構要對應

對於陣列形式結構,只要 某種資料結構具有 iterator介面,可以遍歷,就可以陣列解構

let [x=1] = [undefinde]; 左邊x=1 表示,如果x為undefined,則去取預設值1

但是x為undefinde 是 x嚴格等於undefinde 即 x===undefined

上面表示式是 值為x 則去取1的

嚴格的undefined 是 無定義

null不是undefined

物件的解構

物件的解構不是按照次序的,,,必須是 變數與 屬性同名,才會去取對應的值

let = ;

上面這種方式,預設 屬性名和變數名一致

如果變數名與屬性名不一致則需要這樣寫

let = ;

屬性名是 foo 變數名是 f

則f的值是 aaa, b的值是 bbb

let 和 const不允許重新宣告,否則會報錯

且上面方式 是 宣告和 賦值是一體的,所以不允許再在後面進行 let宣告對應變數

let 宣告變數後,其下面一行 必須用圓括號括起來

let foo;

( = );

可以巢狀

物件賦值 key value形式 ,通過key 找到 前後 value 進行value賦值,而不是給key賦值

由於js會將 {}理解為乙個**塊,所以對於物件的賦值形式,外層必須加 大括號才有效,不報錯

let = math;將math物件的 對數 正弦 余弦三個方法,賦值到對應的變數上

字串的解構賦值

const [a,b,c,d,e] = 『hello』;則 a = h,b=e,c = l,d = l, e = o;這是吧字串看成陣列形式賦值

let =』hello』; 則 len = 5,,把字串看成字串物件有 length屬性,屬性值賦給len

即前面的屬性,必須是 後面的物件所包含的

等號右邊是 數值或者布林值,則會先轉化為 物件

let = 123; s值為 number.prototype.tostring 是 true

解構規則,,只要等號右邊的值不是物件或者陣列,就先將其轉化為 物件,無法轉化為物件的如 undefinde和 null則會解構報錯

函式的引數解構

1、正常形式 陣列 物件解構 和 上部分一致

如 函式為 function add([x,y])

add([1,2]) 1 2 對應 x y

2、函式引數預設值形式

函式 function move( = {})

move();//這裡含義是 傳入[3,8]

含義是,傳入引數 如果 x為undefinde 則x去取預設值 0,如果y 為undefined 則y去取預設值 0

第三點 變數的解構賦值 不能使用圓括號的情況

1、變數宣告語句中,不能帶有圓括號

如 let[(a)] =[1]; //這個是錯誤的

2、函式引數中,模式不能帶有圓括號

如 function f([(z)]) //這個是錯誤的

3、賦值語句中,不能將整個模式或者巢狀模式中的一層放到圓括號中

() = ;//這個是錯誤的

可以放到圓括號的只有賦值語句中的 非模式部分

[(b)] = [3];//正確 是賦值語句。圓括號不屬於模式的一部分

() ={};//正確, 模式是p,而不是 d,所以d可以放到圓括號中

[(parseint.prop)] =[3];

變數解構用途

1、交換變數值 [x,y] = [y,x];

2、從函式返回多個值

function example() let [a,b,c] = example();

functon example();} let = example();

3、函式引數定義

function f([x,y,z]) {}』

f([1,2,3]);

function f(){}; f();

4、提取json資料

let jsondata =;

let = jsondata; //形式,即是宣告又是賦值

5、函式引數 預設值

jquery.ajax = function(url,,

cache = true,

complete = function(){},

crossdomain = false,

global = true,

})或者只獲取鍵名

for(let [key] of map)

= require(「source-map」);

字串的擴充套件

1、」\u」 之前表示是 「\uabcd\udefa」 且 \u0000 ~ \uffff字元之間

現在可以大於此字元 放在\u中會自動將 「\u」 解析為 「\u****\u****」

解析字元規則 按照 utf-16進行解析

所以 var s =」」;上土下口,吉 的異體字

s.length ;//為 2

s.charat(0);// 『』 charat無法讀出 為四個位元組的字元

s.charat(1); 『』

s.charcodeat(0);// 55362 只能讀出前兩個位元組 值

s.charcodeat(1);//57271 和 後兩個位元組

但是上述是 每個都是 四個位元組 編碼 是 0xd842 0xdfb7

所以 用 codepointat來進行可以轉化

var s = 『上土下古字 a』

s.codepointat(0).tostring(16);// 20bb7

s.codepointat(1);// 52271

s.cidepointat(2).tostring();// 『61』

codepointat方法可以字元是 由 兩個位元組 還是四個位元組構成

function is32bit(c)

is32bit(「我」);//true

is32bit(「a」);//false

2、string .fromcodepoint()方法

之前es5 string.fromcharcode 不能識別 32位的utf-16字元,即unicode 大於 0xffff的

但是 es6 string.fromcodepoint方法可以識別

3、遍歷

for(let codepoint of 『foo』)

// 「f」

//」o」

//」o」

var text = string.fromcodepoint(0x20bb7);

for(let i=0;i

ES6語法學習

let 變數 和const 常量 let name jarvis const name jarvis let相當於之前的var,作用域可以是全域性或者塊級作用域,不同作用域互不干擾。注意 1.沒有預解析,不存在變數提公升在 塊內,只要let定義變數,在之前使用,都是報錯 2.同乙個作用域裡,不能重複...

ES6語法學習

一 作用域 const var let 核心 儘量減少使用var,常量使用const,塊級作用域使用let 5個按鈕,實現點選第i個按鈕,顯示i按鈕被點選。var btn document.getelementsbytagname button es5使用閉包解決var作用域問題 for var i...

ES6語法學習筆記

基本用法 1.先定義後使用 let a 0 console.log a a 02.塊內有效 let在 內部定義的變數,在外部是不可以訪問的,而var 定義的變數是在全域性範圍內有效 console.log a referenceerror a is not defined console.log b...