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的特點 不允許重複宣告 不允許重新賦值 可以給物件中新增屬性 宣告的時候必須賦值 不存在...