在javascript中有三种声明变量的方式:var、let、const。
var 声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用。
for(var i=0;i<=1000;i++){
var sum=0;
sum+=i;
}
alert(sum);
声明在for循环内部的sum,跳出for循环一样可以使用,不会报错正常弹出结果
let:声明块级变量,即局部变量。
在上面的例子中,跳出for循环,再使用sum变量就会报错,有着严格的作用域,变量只作用域当前隶属的代码块,不可重复定义同一个变量,不可在声明之前调用,必须先定义再使用,会报错,循环体中可以用let
注意:必须声明'use strict';
后才能使用let
声明变量否则浏览并不能显示结果,
const:用于声明常量,也具有块级作用域 ,也可声明块级。
const PI=3.14;
它和let一样,也不能重复定义同一个变量,const一旦定义,无法修改
来自 https://www.cnblogs.com/liuna/p/6137279.html
js-ES6学习笔记-const命令
1、const声明一个只读的常量。一旦声明,常量的值就不能改变。
2、const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。
3、const的作用域与let命令相同:只在声明所在的块级作用域内有效。
4、const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
5、const声明的常量,也与let一样不可重复声明。
6、对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。
7、如果真的想将对象冻结,应该使用Object.freeze方法。
8、ES5只有两种声明变量的方法:var
命令和function
命令。ES6除了添加let
和const
命令,后面章节还会提到,另外两种声明变量的方法:import
命令和class
命令。所以,ES6一共有6种声明变量的方法。
9、顶层对象,在浏览器环境指的是window
对象,在Node指的是global
对象。ES5之中,顶层对象的属性与全局变量是等价的。
10、ES6中,var
命令和function
命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let
命令、const
命令、class
命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。
来自 https://www.cnblogs.com/zczhangcui/p/6393304.html