虽互不曾谋面,但希望能和您成为笔尖下的朋友
以读书,技术,生活为主,偶尔撒点鸡汤
不作,不敷衍,意在真诚吐露,用心分享
点击左上方,可关注本刊
标星公众号(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 参数