虽互不曾谋面,但希望能和您成为笔尖下的朋友
以读书,技术,生活为主,偶尔撒点鸡汤
不作,不敷衍,意在真诚吐露,用心分享
点击左上方,可关注本刊
标星公众号(ID:itclanCoder)
如果不知道如何操作
点击这里,标星不迷路

var let const 的区别
共同点:定义声明变量
不同点:
var声明的变量可以重复声明,没有块的概念,可以跨块访问,不能跨函数访问,当出现相同的变量名时,后者会覆盖前者,let,const有块级作用域,并且不可重复声明(不存在变量提升,所以用let定义的变量一定要在声明后再使用,否则会报错)let定义的变量,只能在块作用域中访问(也就是在花括号内访问),不能跨函数访问const用来定义常量,使用时得先初始化,然后在赋值,只能在块作用域里访问,而且不能修改let和var的不同是,在变量声明之前就访问变量的话,会直接提示ReferenceError,而不像var那样使用默认值undefined
什么是暂时性死区
如果区块(花括号)中存在let命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域,凡是在声明之前就使用这些变量,就会报错,所以在代码块内,使用let命令声明变量之前,该变量都是不可用的
这被称为暂时性死区
let sName = 'itclan';
if (true) {
console.log(sName); // Uncaught ReferenceError:sName is not defined
let sName = 'itclan';
}
当前作用域顶部到该变量声明位置中间的部分,都是该let变量的死区,在死区中,禁止访问该变量
所谓暂时性死区,就是具有块级作用域,变量需要先声明,然后在使用,否则的话,就会报错,即使用typeof检测一个变量,会报错ReferenceError
typeof sName; // ReferenceError
let name;
只要块级作用域内存在 let 命令,它所声明的变量就绑定了这个区域,不再受外部的影响,在代码块中,使用let命令声明变量之前,该变量都是不可用的
玩一玩-搞清亲戚称谓关系

公众号(ID:itclanCoder)
码能让您早脱菜籍,文能让您洗净铅华
可能您还想看更多:
Js篇-面试题12-如何解析 URL 提取 params 参数




371

被折叠的 条评论
为什么被折叠?



