ES6入門-let和const指令

LET:javascript

基本用法:在javascript中聲明一個變量一般使用var ,在es6中新增了let指令,用法相似var ,可是let聲明的變量只能在所在的代碼塊有效。java

⚠️  使用let聲明變量要注意一下幾個點:es6

1,let指令不存在變量提高,因此變量必定要先聲明後再使用,不然就會報錯。瀏覽器

console.info(info);   //ReferenceError
let info;

2, 存在暫時性死區,也就是說,只要一個塊級做用域中使用let聲明瞭某個變量,那麼這個變量就被綁定在這個區塊了。外界對它是影響不到的。ide

var  info = 123;

if(true){
    info = "abc"; //ReferenceError
    let info;  
}

  以上這段代碼中存在全局變量info 可是在區塊中又使用let聲明瞭一個info變量,因此這個變量info就被綁定在塊級做用域中,因此會報錯。(😖  疑問:爲何全局變量不用let來聲明?是由於let聲明語句是不能重複聲明一個變量??)函數

3, 不容許重複聲明,let指令不容許在相同的做用域內重複聲明一個變量es5

//報錯
function(){
    let aa = 10;
    var aa = 3;
}


//報錯
function(){
    let aa = 10;
    let aa = 3;
}


// 也不能在一個函數內部從新聲明參數
function(arg){
    let arg = 10;
}

 CONST:spa

const 用來聲明常量。⚠️一旦聲明便不可改變其值。code

一,與let的共同點:對象

1,只能在聲明所在的塊級做用域沒有效

2,只能在聲明後使用

3,const指令聲明的常量也不可提高,一樣存在暫時性死區,只能在聲明後使用

4,不可重複聲明常量

 

tips1 : 若是想設置跨模塊常量可使用一下寫法:

// constants.js

export const a = 1;
export const b = 2;
export const c = 3;

// test1.js

import * as constants from './constants';
console.info(constants.a);  // 1
console.info(constants.b);  // 2
console.info(constants.c);  // 3



//test2.js

import {a, b} from './constants';
console.info(a);  // 1
console.info(b);  // 2

 

全局對象的屬性

全局對象是最頂層的對象,在瀏覽器環境指的是window對象,在nide.js中指的是global對象,在es5中,全局對象的屬性與變量是等價的。 以下:全局對象屬性賦值和全局變量的賦值是一件事。

window.a = 1;   // a=1

a = 2; //a = 2

如上規定,很容易不自覺的建立了全局變量,ess6爲了改變這一點,一方面規定,var命令和function命令聲明的全局變量依舊是全局對象的屬性,另外一方面規定,let、const、和class命令聲明的全局變量不屬於全局對象的屬性。

var a = 2;
window.a; // 2

let b = 3;
window.b;  //undefined

 

二,在es5和es6中的聲明命令

es5:var  function

es6 : var  function  let  const  class

相關文章
相關標籤/搜索