概述
转载来的 地址是:http://www.cnblogs.com/ricoliu/p/6149912.html
通过var定义的变量,作用于是整个封闭函数,是全域的
通过过let定义的变量,作用域是在块级或是子块中
变量提升现象:
浏览器在运行代码之前会进行预解析,首先解析函数申明,定义变量,解析完之后再对函数、变量进行运行、赋值
var声明的变量会被提升到作用域的顶部并初始化为undefined
而let声明的变量在作用域的顶部未被初始化
只要款及作用域内存在let命令,它所声明的变量就“绑定” 这个区域,不再受外部的影响
暂时性死区(temporal dead zone,简称TDZ):
在代码块内,使用let命令声明变量之前,该变量都是不可用的;
“暂时性死区”也意味着typeof不再是一个百分之百安全的操作
举例1:变量x使用let命令声明,所以在声明之前,都属于x的“死区”,只要用到该变量就会报错。因此,typeof运行时就会抛出一个ReferenceError
typeof x; // ReferenceError
let x;
举例2:如果一个变量根本没有被声明,使用typeof反而不会报错。
typeof undeclared_variable // "undefined"
ES6规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。
我建了个java群,随时交流 657445315
最后
以上就是兴奋巨人为你收集整理的let和var的区别的全部内容,希望文章能够帮你解决let和var的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复