首页 > 代码库 > let命令
let命令
ES6新增了let命令,用来声明变量。它的用法类似于var。
let和var声明变量的区别:
1、let声明的变量,只在let命令所在的代码块内有效,出了这个块级作用域就不起作用
先看一个例子:
{ let a=10; var b=1; } console.log(a); console.log(b);
上述例子运行结果如图:
以上例子中,分别用var和let声明了两个变量,然后在代码块之外调用这两个变量。let定义的a变量会报错 var声明的变量b会返回正确值.这表明,let声明的变量只在它所在的代码块有效。
什么是块级作用域?
任何一对花括号({ })中的语句都属于一个块,在花括号里面用let定义的所有变量在花括号外都是不可见的,我们称之为块级作用域。
2.用var 声明变量的时候会出现“变量提升“的现象,而let声明变量不存在“变量提升“现象。
什么是变量提升?
变量可以在声明之前使用,变量的值为undefined。但let
命令改变了该语法行为,它所声明的变量一定要在声明后使用,否则报错。
例子1:
//var的情况
console.log(a); var a=10;
//let的情况 console.log(b); let b=100;
上述例子运行结果如图:
上面代码中,变量a用var
命令声明,会发生变量提升,即脚本开始运行时,变量a
已经存在了,但是没有值,所以会输出undefined
。变量b
用let
命令声明,不会发生变量提升。这表示在声明它之前,变量b
是不存在的,这时如果用到它,就会抛出一个错误。
例子2:
var a = 10; (function(){ console.log(a); var a = 20; })();
上述例子运行结果:undefined
上面代码中,代码一开始已经定义了变量a,值为1,相当于全局变量,但是我们在代码块(函数内)里面还声明并定义了一个变量a,导致变量提升了,实际的代码执行顺序是这样的,
var a = 10; (function(){ var a; console.log(a);//先执行声明,接着就执行console.log(a);变量a只是声明还没定义,值便为undefined了。 a = 20; })();
let命令
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。