ES6新增特性

2021-10-04 07:07:02 字數 3802 閱讀 5197

let

1.let宣告的變數不會掛在window中,不會像var宣告的變數一樣造成全域性變數的汙染

2.新增了乙個塊級作用域{},以前只有函式作用域,全域性作用域

3.let是不允許重複宣告

4.let不會有宣告提前

var num =15;

//全域性變數

console.

log(num)

;//15

console.

log(num2)

;//報錯

let num2 =15;

//無法宣告提前

console.

log(window.num2)

;//undefined let宣告不會掛在window上

const

1.不允許被修改

2.const宣告和賦值必須一次性完成

3.其他的跟let完全相同

使用`$`讓字串的拼接更加的簡潔、直觀。

//一般的字串拼接+換行

var name =

'老王'

;var str =

'我的\n名字是'

+ name;

console.

log(str)

;//使用模板字串

var str2 =

`我的名字是$`

可以把陣列或者物件中的每一項展開

let arr =[1

,2];

let arr2 =[3

,4];

let arr3 =

[...arr,7,

...arr2]

;console.

log(arr3)

;// 1 2 7 3 4

console.

log(math.

max(

...arr3));

// 1

let obj =

let obj2 =

let obj3 =

console.

log(obj3)

;//

可以方便的從陣列或者物件中快速提取值賦給定義的變數。

陣列解構

陣列以序號位置一一對應來取值,以下是陣列解構的幾種用法

let num=[1

,2,3

,[13,

"小王"]]

;let

[a, b, c]

= num;

console.

log(a, b, c)

;// 1 2 3

//可以選擇所需的值來進行賦值

let[d,

, e,

[age,name]

]= num

console.

log(d,e,age ,name)

;// 1 5 13 "小王"

let[f, g, h, i, l]

= num;

console.

log(f,g,h,i,l)

;// 1 2 3 [13,"小王"] undefined

//可以配合展開運算子進行賦值

let[k ,

...arr]

= num;

console.

log(k ,arr)

// 1 [2 ,3 [13,"小王"]]

物件解構

物件根據屬性名一一對應來取值,以下是物件解構的幾種用法

let=;

console.

log(a,b,d)

// 'cc' 'bb' undefined

let obj =};

let}

= obj;

console.

log(a,b,name, age)

;// zhangsan 22 老王 33

//一般情況下,未傳引數的預設值

function

fun(name)

fun();

//我的名字是隔小王

fun(

'老王');

//我的名字是老王

//es6的預設值

function

fun2

(name=

'小王')`

);}fun2()

;//我的名字是小王

fun2

('老王');

//我的名字是老王

//預設引數必須===undefined預設值才能生效

fun2

(undefined)

;//我的名字是小王

fun2

(null);

//我的名字是null

箭頭函式沒有原型,所有說占用空間非常小,不能當成建構函式來使

//一般的函式寫法

function

fun(num)

//如果引數只有乙個,可以省略小括號

letfun

= num =>

//函式體只有一句話,可以省略大括號,並且可以省略return

letfun

= num => num;

//箭頭函式內部沒有 this arguments

let obj =

}

js本身就是物件導向的,es6中提供的類實際上只是js原型模式的包裝。現在提供原生的class支援後,物件的建立,繼承更加直觀了,並且父類方法的呼叫,例項化,靜態方法和建構函式等概念都更加形象化。

1.類的宣告不會被提公升,和let const 一樣,有臨時性死區

2.類的所有**全都是在嚴格模式中執行

3.類的所有方法都是不可列舉的

//一般的建構函式

function

person

(name)

//增加例項方法

person.prototype.

print

=function()

let a =

newperson

("老王");

a.print()

;//我的名字是:老王

//類的定義

class

person

//例項方法

print()

}//extends 類的繼承

//如果說子類不寫constructor,則會有預設的構造器,自動去呼叫父類的構造器

class

person2

extends

person

print()

print2()

}var animal=

newperson

('小王'),

wayou=

newperson2

('老王');

animal.

print()

;//我的名字是:小王

wayou.

print()

;//我有個朋友的名字是:老王

wayou.

print2()

;//我隔壁有個人的名字是:老王

ES6新增特性

1 變數定義 const let 2 解構 3 箭頭函式 核心 this的指向 4 模板字面量 5 spread rest 物件展開 6 子符串 陣列新增方法 console.log str.includes de true,字串是否包含de console.log str.endswith ef ...

ES6新增特性 解構賦值

es6按照一定模式,從陣列和物件中提取值,對變數進行賦值,稱作解構賦值。按照下面的形式進行解構賦值。let a,b,c 1,2,3 console.log a 1 console.log b 2 console.log c 3若解構不成功,變數的值為undefined。let foo console...

面試之 ES6新增特性

1 var let const 變數提公升 暫時性死區 塊級作用域 重複宣告變數 修改宣告的變數 能用const b不用let 能用let不用var 2 陣列新增的一些 擴充套件運算子.將乙個陣列轉換成逗號分割的引數序列 array.from array.of 轉換成陣列 find findinde...