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...