ES6新增const常量、let变量

JavaScript 严格模式(use strict)

严格模式下你不能使用未声明的变量。
const c1 = 1; 
const c2 = {}; 
const c3 = []; 
不能对c1的值进行再次的赋值;
也不能在对c2,c3进行赋值,但是可以改变c2的内容,因为c2是个对象,看例子
c2.p1
= 1; console.log(c2.p1)打印出来结果为1 同样,也可以往c3中添加元素,因为c3是个数组。
const声明的变量与let声明的变量类似,它们的不同之处在于,const声明的变量只可以在声明时赋值,不可随意修改,否则会导致语法错误
例如 const a=1; a=12; 这样会报错 
同样 const a
=0; a++;在use strict下一样会报错
声明不赋值同样报错,const a; 报错
let a
=0; a++;可以被执行; let a=0; a=12;可以被执行
let a
=0; let a=12; 报错
 有区别于var在于他们存在块级作用于,就是你声明的变量只作用于某个域,比如一个函数,而不是全局,从上面也可以看出let 为变量 const为常量

下面在具体举例说明

1.let声明的变量只在变量声明时所在的代码块内有效 
对比: 
{ 
  var url = "www.baidu.com"; 
} 
  alert(url); 
//-------------------------------- 
{ 
  let url = "www.baidu.com"; 
} 
  alert(url); 
2.let不允许在同一作用域重复声明变量: 
 let url = "www.baidu.com"; // 第一次
{ 
  let url="www.sina.com.cn"; //第二次
   console.log(url);  
} // 第一次正确,第二次放到括号里面错误 
3.let与全局变量的声明 
//错误 
let a=3; 
  { 
    var a=5; 
  } 
    alert(a); 
 
//正确 
var a=3; 
{ 
   let a=5; 
} 
  alert(a); 
4.作用到子作用域
let a=3;
{
   a=5;  //子作用域
}
  alert(a); //弹出5

二、const命令 

const命令用来生成一个常量,常量被声明后,值无法改变。其他与let相同。
const一旦定义,无法更改,let定义块级变量,他们都是无法重复声明的,会报错,而var可以覆盖之前的声明
原文地址:https://www.cnblogs.com/Model-Zachary/p/6106491.html