ES6新增 let const var的區別

2021-09-19 07:09:18 字數 1458 閱讀 9068

var定義的變數,沒有塊的概念,可以跨塊訪問, 不能跨函式訪問。

let定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。

const用來定義常量,使用時必須初始化(即必須賦值),只能在塊作用域裡訪問,而且不能修改。

es6的let變數宣告特點:

1. 擁有塊級作用域

2.沒有變數宣告提公升

3.暫時性死區

4.不能重複宣告

5.let不會成為全域性物件的屬性

以上let所介紹的規則均適用於const命令,不同的是,const宣告的變數不能重新賦值,也是由於這個規則,const變數宣告時必須初始化,不能留到以後賦值

1.擁有塊級作用域:

let宣告的變數只在所宣告的**塊內有效。塊級作用域由 包括,if語句和for語句裡面的也屬於塊作用域。

console.log(a); //10

console.log(b); // referenceerror: b is not defined

var a =;

for( var i=0; i<10; i++ )

} for( var j = 0; j2.沒有變數宣告提公升:

使用let宣告的變數,不會像使用var那樣存在「變數提公升「」的現象。所以使用let宣告變數,必須遵循「先宣告,後使用」的原則。否則會報錯

console.log(a); //referenceerror

let a = 10;

如果是var宣告的變數,則不會報錯。

console.log(b); //undefined

var b = 10;

3.暫時性死區:

在**塊內,使用let宣告變數之前,該變數都是不可以使用用

只要在同一作用域內存在let命令,他所宣告的變數就「繫結」在這個作用域內,不管外部有沒有宣告

let a =10;

function fn1()

fn1();//uncaught referenceerror: a is not defined

4不能重複宣告

在同一作用域內,如果使用var宣告同乙個變數,則後面的覆蓋前面的

var a = 10;

let a = 10;

console.log(a);//uncaught syntaxerror:

identifier 'a' has already been declared

let a = 10;

let a = 15;

console.log(a);//uncaught syntaxerror:

identifier 'a' has already been declared

5.let不會成為全域性物件的屬性

ES6 陣列新增

window.onload function 作用 把類陣列 獲取一組陣列元素,arguments.物件轉成陣列 具備length這個東西,就靠譜 let arr 1,2,4 let arr2 array.from arr let json let arr array.from json 作用 把一...

ES6新增特性

let 1.let宣告的變數不會掛在window中,不會像var宣告的變數一樣造成全域性變數的汙染 2.新增了乙個塊級作用域 以前只有函式作用域,全域性作用域 3.let是不允許重複宣告 4.let不會有宣告提前 var num 15 全域性變數 console.log num 15 console...

ES6新增語法

es6中新增的宣告變數的方式 let關鍵字用來宣告變數,類似於var,但是使用let宣告的變數有以下幾點特性 1.不存在變數提公升 2.暫時性死區 3.不允許重複宣告,同一作用域內只能宣告一次 4.新增的塊級作用域 for 作用域a 迴圈的應用 const關鍵字用來宣告常量,其使用規則除了宣告之後不...