let,const是es6種新增的關鍵字;
let的特點:
let宣告的變數只在let所在的**塊有效
let沒有變數提公升功能,所以作用域只在所宣告的**塊中,在該**外之外都訪問不到
let變數只能宣告一次,不能重複宣告(同乙個作用域下)
console.log(a);
//uncaught referenceerror: a is not defined,報錯不會繼續往下執行
let a=2;
console.log(a);
let a=2;console.log(a);//2
console.log(a);
//2
var的特點:
var可以重複宣告變數
var有變數提公升的租用,所以宣告變數是全域性作用域,但js種函式是可以控制var宣告的變數是區域性作用域
console.log(a);//1
var a=2;
console.log(a);
//2
const的特點:
const是宣告乙個唯讀的常量,一旦宣告,常量的值就不能改變
一旦宣告必須賦值,否則會報錯
const pi=3.1415926;console.log(pi)
console.log('***************===')
const pi2;
console.log(pi2)
//uncaught syntaxerror: missing initializer in const declaration
//一旦宣告必須初始化,否則報錯
const obj=;
obj.a=2;
console.log(obj)
////
此時obj是個物件,obj儲存的是物件的位址,位址沒有改變,所以此時不會報錯
obj=function
()console.log(obj)
//報錯
//把乙個物件重新賦值給了obj,此時改變了物件的指標指向
let 和const都有封閉性死區的特性:
let a=123;//**塊外定義了乙個變數aif(true
)
var a=1;if(a>0)
es6明確規定:**內如果存在let或者const,**塊會對這些命令宣告的變數會從**塊的開始就形成乙個封閉的作用域。**塊內,在宣告變數a/a之前使用它就會報錯。
備註:從結束,**形成乙個封閉的區域,不管**塊外邊是否用let/const對當前變數進行了定義,**塊中的變數都不受影響。因為不在同乙個作用域下,如果是同乙個作用域,變數是不能重複宣告的。
js ES6解構賦值
交換變數的值 let x 1 let y 2 x,y y,x console.log x,y 1用乙個中間變數 let z x x y y z console.log x,y 2異或 x x y y x y x x y console.log x,y 3.算術運算子 x x y y x y x x ...
js es6中陣列的變化
1.擴充套件運算子 js 2.arrya.form js let arr 1,2,3 let arr3 array.from arr 傳進去的不管是類陣列還是陣列返回的都是陣列 arguments function show show 1,2,3,4,5 當json中有length的時候 也可以當成...
js ES6學習筆記 Proxy
1 proxy 用於修改某些操作的預設行為,等同於在語言層面做出修改,所以屬於一種 元程式設計 meta programming 即對程式語言進行程式設計。2 proxy 可以理解成,在目標物件之前架設一層 攔截 外界對該物件的訪問,都必須先通過這層攔截,因此提供了一種機制,可以對外界的訪問進行過濾...