我是靠谱客的博主 兴奋巨人,最近开发中收集的这篇文章主要介绍let和var的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转载来的 地址是: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的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部