js es6中let const和var的區別

2022-09-12 18:15:16 字數 1433 閱讀 1408

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;//**塊外定義了乙個變數a

if(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 可以理解成,在目標物件之前架設一層 攔截 外界對該物件的訪問,都必須先通過這層攔截,因此提供了一種機制,可以對外界的訪問進行過濾...