ES5&&ES6
1、let
1.塊級做用域, let定義的變量只在代碼塊中有效
2.let聲明的變量不會提早(前置)(意味着必須先定義後使用)
3.不能重複定義 ,在同一個做用域中不能聲明同名的變量
4.暫時性死區(當內部變量與外部變量同名時,內部變量會屏蔽外部變量)
注:let和var的區別
1)let聲明的變量是塊級做用域(所在花括號裏),var是函數做用域和全局做用域
注意:let是能夠定義全局變量,局部變量,塊級做用域的變量。(和寫代碼的位置有關)
2)let聲明的變量不會聲明提高,var會聲明提高
3)從代碼的寫法上,let不能聲明同名的變量,var能夠。
2、this和bind
1.this
1).以函數的形式調用時,this永遠都是window
2).在事件處理函數時,this是事件源.
2.bind(this從新指代的對象)(只能爲匿名函數服務)
3.call和apply
call和apply本質上能改變函數所屬的對象(函數內部的this)
參數是誰,this就是誰
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
3、JSON.parse/JSON.stringfy
JSON字符串和對象的直接的轉換
字符串轉換成JSON對象:JSON.parse
JSON對象轉換成字符串:JSON. stringify
var str = '{"id":"123","name":"456"}';
let obj = JSON.parse(str);
console.log(obj.id);
console.log(obj.name);
let str1 = JSON.stringfy(obj);
console.log(str1.id);
console.log(str1.name);
4、const只讀變量
用const來修飾一個變量,就意味着該變量裏的數據只能被訪問,而不能被修改,也就是意味着const「只讀」(readonly)
const所修飾的變量必須賦初始值
const修飾的是直接指向(修飾)的內存
引用類型有兩塊內存區域
引用類型表明的是保存地址的內存區域,數組元素表示的是數據
5、for in與for of
let strArr = [];
for(let index in strArr){
console.log(strArr[index]);
}
for(let t of strArr){
console.log(t);
}
6、字符串的擴展
判斷字符串是否包含在另外一個字符串中
ES5 indexOf(參數)
ES6 includes(參數) 返回布爾值,表示是否找到參數的字符串
startsWith(參數) 返回布爾值,參數是否在源字符串的頭部
endsWith(參數) 返回布爾值,參數是否在源字符串的尾部
7、箭頭函數(針對於匿名函數)
eg: x=>x*5至關於function(x){ return x*5 }
var f=(id,name)=>({id:id,name:name});
//等價於:
var f=(id,name)=>{
return {id:id,name:name}
};
8、解構賦值(針對於數組、對象)
優勢:1. 可讓一個函數返回一個的值
2. 能夠實現兩個數的交換
3.能夠將多個變量進行初始化
eg: let a=1;b=22;t;
a=a+b;
b=a-b;
a= a-b;
console.log(a,b);
eg: let [v1,[v2,v3],[v4,v5]] = [12,[23,34],[56,67],[5,6]];
console.log(v1);
console.log(v2);
console.log(v3);
console.log(v4);
console.log(v5);
let {name,age} = {name:"dahuang",age:18};
console.log(name,age);
9、Set和Map
set特色:自動去重,無下標
let set = Set([2,3,5,6,2,3,2,1]);
console.log(set.size); //5
for(let t of set){
console.log(t);
}
set集合的方法:
add(參數) 向集合中添加一個元素
delete(參數) 刪除集合中某個數
has(參數) 判斷集合中是否含有某個值
clear(參數) 清空集合中的元素
from(參數) 將集合轉爲數組
Map : 鍵值對
set() 向集合中添加一個元素
get(鍵) 根據鍵去取值
delete( 鍵) 刪除集合中的某個數
has(鍵) clear(參數) 清空集合中的元素
from(參數) 將集合轉爲數組
Map的遍歷
for(let t of map){
console.log(t[0] + t[1]); //0表明key,1表明value
}
10、Symbol
1.表示獨一無二的值,它是基本類型中的一種。
2.它是內置基本對象,不能使用new關鍵字來使用。let symbol = Symbol();
let symbol1 = symbol("heihei");
let symbol2 = symbol("heihei");
console.log(symbol1 === symbol2); //false
let age =Symbol();
var a = {
name:"老王";
[age]: 18 ;
hobby: "寫代碼";
};
for(let i in a){
console.log(a[t]); //老王
//寫代碼
}
console.log(a[age]); //18