ES6新增語法

2021-10-06 08:37:59 字數 4144 閱讀 8495

es6中 新增的用於宣告變數的關鍵字。

使用let關鍵字宣告的變數的特點:

(1)let宣告的變數只在所處於的塊級有效(使用let關鍵字宣告的變數具有塊級作用域)

if(true) 

console.log(a);//報錯

注意:使用let關鍵字宣告的變數才具有塊級作用域,使用var宣告的變數不具備塊級作用域特性。

擁有塊級作用域的變數的好處:防止迴圈變數變成全域性變數。

//使用var關鍵字

for(var i = 0;i < 2;i++)

console.log(i);//輸出2

//使用let關鍵字

for(let i = 0;i < 2;i++)

console.log(i);//報錯

(2)使用let關鍵字宣告的變數不存在變數提公升

var關鍵字可以先使用再宣告,但是let關鍵字必須先宣告才能使用。

console.log(a);//報錯

let a = 10;

(3)使用let關鍵字宣告的變數具有暫時性死區

var num = 20;

if(true)

var關鍵字的經典面試題:

var arr = ;

for(var i = 0;i < 2;i++) ;

}arr[0]();

arr[1]();

//此題的關鍵點在於變數i是全域性的,函式執行時輸出的都是全域性作用域下的值。

let關鍵字經典面試題:

let arr = ;

for(let i = 0;i < 2;i++) ;

}arr[0]();

arr[1]();

//此題的關鍵點在於let關鍵字會生成兩個塊級作用域,乙個是let i = 0,另乙個是let i = 1,它們會分別輸出結果

if(true) 

console.log(a);//報錯

(2)宣告常量時必須賦值

const pi;//報錯

const pi = 3.14;//正確

(3)常量賦值後,值不能修改

//基本資料型別

const pi = 3.14;

pi = 100;//報錯

注意:對於基本資料型別來講,常量在宣告之後值不可更改

//複雜資料型別

const ary = [100,200];

ary[0] = 'a';//沒有更改ary常量在記憶體中的儲存位址

ary[1] = 'b';

console.log(ary);//輸出['a','b']

ary = ['a','b'];//報錯,改變了ary常量在記憶體中的儲存位址

(1)使用var宣告的變數,其作用域為該語句所在的函式內,且存在變數提公升現象,值可更改;

(2)使用let宣告的變數,其作用域為該語句所在的**塊內,不存在變數提公升,值可更改;

(3)使用const宣告的是常量,在後面出現的**中不能再修改該常量的值,不存在變數提公升。

es6允許從陣列中提取值,按照對應位置對變數賦值。物件也可以實現解構。

(1)陣列解構

let [a,b,c] = [1,2,3];//等號左邊的中括號不是陣列,它代表解構,a、b、c為變數,不用加引號

console.log(a);//輸出1

console.log(b);//輸出2

console.log(c);//輸出3

//如果解構不成功,變數的值為undefined

let [a] = ;

console.log(a);//輸出undefined

let [a,b] = [1];

console.log(a);//輸出1

console.log(b);//輸出undefined

(2)物件解構

物件解構允許我們使用變數的名字匹配物件的屬性,匹配成功將物件屬性的值賦給變數。

//寫法一

let person = ;

let = person;

console.log(name);//輸出zhangsan

console.log(age);//輸出18

//寫法二

let person = ;

let = person;

console.log(myname);//輸出zhangsan

console.log(myage);//輸出18

es6中新增的定義函式的方式。

語法:() => {}

const fn = () => 

fn();

(1)函式體中只有一句**,且**的執行結果就是返回值,可以省略大括號

const sum = (a,b) => a + b;

const result = sum(10,10);

console.log(result);//輸出20

(2)如果形參只有乙個,可以省略小括號

const fn = a => a;

const result = fn(10);

console.log(result);//輸出10

箭頭函式不繫結關鍵字(也就是說沒有自己的this關鍵字),箭頭函式中的this,指向的是函式定義位置的上下文this。

const obj = 

function fn ()

}const resfn = fn.call(obj);//呼叫fn,返回了乙個箭頭函式並賦給常量resfn

resfn();

箭頭函式面試題:

var age = 25;

var obj =

}obj.say();

此題的關鍵點在於物件是不能產生作用域的,say方法被定義在了全域性作用域下,say方法中的this指向的是window,所以彈出的是window物件下的age,也就是25

(1)剩餘引數語法允許我們將乙個不定數量的引數表示為乙個陣列(即實參個數大於形參個數時,可以將剩餘的實參放在乙個陣列中)。

//傳統寫法

function sum(first,...args)

sum(10,20,30);

//箭頭函式寫法

const sum = (...args) => ;

sum(10,20);//輸出[10,20]

sum(10,20,30);//輸出[10,20,30]

注意:在es6之前我們通常會使用函式內部的args一次性的取到所有實參,但在箭頭函式中使用不了args。

const sum = (...args) => ;

console.log(sum(10,20));//輸出30

console.log(sum(10,20,30));//輸出60

(2)剩餘引數和解構配合使用

let students = ["張三","李四","王五"];

let [s1,...s2] = students;

console.log(s1);//輸出張三

console.log(s2);//輸出["李四","王五"]

ES6新增語法

es6中新增的宣告變數的方式 let關鍵字用來宣告變數,類似於var,但是使用let宣告的變數有以下幾點特性 1.不存在變數提公升 2.暫時性死區 3.不允許重複宣告,同一作用域內只能宣告一次 4.新增的塊級作用域 for 作用域a 迴圈的應用 const關鍵字用來宣告常量,其使用規則除了宣告之後不...

ES6新增語法

逆戰es6新語法概覽 語法箭頭函式 this es6中可以使用 作為函式表達形式,極簡風格,引數 函式體。var foo function 等價於 let foo 1 let nums 1,2,3,5,10 let fives nums.foreach v console.log fives 5,1...

es6新增的語法

es6將弱型別的js提公升為中弱型別。我們也一定要學習es6.es6新增知識點 1 定義變數 之前定義變數一直用的是var,但是es6中可以使用let和const 但是let有幾個特點 不允許宣告變數 const的特點 不允許重複宣告 不允許重新賦值 可以給物件中新增屬性 宣告的時候必須賦值 不存在...