ES6+的功能:var、let、const關鍵字辨析

var、let、const關鍵字辨析
varjavascript

  1. 能夠重複定義同名變量
var name='Bob';
var name='Tom';
console.log(name) //Tom
  1. 存在變量提高
//javascript 能夠將變量提高 
a = 2
console.log(a); //2 
var a
//可是初始化的變量是不能提高的
console.log(b); //undefined
var b=3;
  1. 沒有塊級做用域
let arr=[];
for(var i=0;i<2;i++){
  arr[i]=function(){
    console.log(i)
  }
}
arr[0](); //2
arr[1](); //2
//var 沒有塊級做用域,i是全局變量 又由於function不是當即調用函數,循環會很快走到盡頭

letjava

  1. 具備塊級做用域
let arr=[];
for(let i=0;i<2;i++){
  arr[i]=function(){
    console.log(i)
  }
}
arr[0](); //0
arr[1](); //1
// 若是是var 結果就是2,2 由於var沒有塊級做用域,i是全局變量 又由於function不是當即調用函數,循環會很快走到盡頭
  1. 存在暫時性死區
let b=10;
function fn(){
  console.log(b);
  let b=20
}
fn(); 
//會報錯 Cannot access 'b' before initialization
  1. 不存在變量提高
x=3;
console.log(x); //會報錯 Cannot access 'b' before initialization
let x;
  1. 不能重複定義同名變量
let name='Bob';
let name='Tom';
console.log(name) 
// 會報錯 Identifier 'name' has already been declared

const函數

  1. 具備塊級做用域
if(true){
  const num=10;
}
console.log(num) //會報錯  num is undefined
  1. 聲明的變量是隻讀而且須要賦值
const PI 
console.log(PI) //會報錯 Missing initializer in const declaration
const P=3.1415;
p=3;
console.log(p)//會報錯 Assignment to constant variable.
  1. 若是申明的是引用類型(複雜類型數據)內容能夠修改可是地址不能夠修改
const obj = 
      {
        name: 'xm',
        age: 23
      }  
obj.age = 24;
console.log(obj); // 能夠操做
obj = {}; //欲修改地址,會報錯
console.log(obj);
相關文章
相關標籤/搜索