var let const隨筆記(1)

1. 基本概念spa

var 聲明瞭一個變量,而且能夠同時初始化該變量code

let 聲明一個塊級做用域的本地變量,而且可選的賦予初始值對象

const 聲明建立一個只讀的常量,做用域與let相同,這並不意味着常量指向的值不可變,而是變量標識符的值只能賦予一次blog

注意:在語法中的塊級做用域是指if/else/for/while語句裏2個大括號之間的部分作用域

2. 基本用法it

(1)let 所聲明的變量,只在let命令所在的代碼塊中有效io

1 {
2     let a = 1;
3     var b= 2;  
4 }
5 
6 a //ReferenceError: a is not defined
7 b // 2

上面的代碼塊中,分別用了let 和var 定義了兩個變量,而後在代碼塊以外分別調用這兩個變量,結果let聲明的變量報錯,var聲明的變量返回了正確的值,這說明:console

let聲明的變量只在它所在的代碼塊中有效。for循環

for循環中很適合用let;同時,還有一個很特別之處,以下面的第二段代碼:循環語句部分是一個父做用域,而循環體內是一個單獨的子做用域,所以輸出了三次‘abc’,這代表:做用域內部的變量i和外部的變量i是分離的class

for(let i=0;i<3;i++){}
console.log(i);//RenferenceError:i is not defined
for(let i=0;i<3;i++){
    let i="abc";
    console.log(i);
}
// abc
// abc
// abc

(2)const聲明一個只讀的常量,一旦聲明,常量的值就不能夠改變,以下代碼,當執行到第三行就會報錯

1 const PI = 3.1415926;
2 console.log(PI);   //3.1415926
3 PI = 3; //TypeError: Assignment to constant variable.

同時,const聲明的變量不得改變值,因此一旦聲明變量就必須當即初始化,不能留到之後賦值

const str;
// SyntaxError: Missing initializer in const declaration 這表示,對於const來講,只聲明不賦值,就會報錯。

 可是如下代碼是不會報錯的,const定義常量值,不可以從新賦值,若是值是一個對象,能夠改變對象裏邊的屬性值

{
    const a = {value:1}
    a.value = 2
    console.log(a) // {value:2}

    const b = [1,2,3]
    b.push(4)
    console.log(b) // [1,2,3,4]
}
相關文章
相關標籤/搜索