js中var 和 let的区别用法

原创 西红柿是小贱猫 随笔 js基础知识 339阅读 2017-10-31 18:32:04 举报

var特点:可重复复制/局部作用域/使用前未声明undefined

let特点:不可重复赋值/块级作用域/使用前必须声明(相对var)
声明后未赋值,表现相同
let VS var

使用尚未声明的变量,表现不同(要注意,var有变量声明提升,如果在作用域内皆未声明,则报错;此外,只有声明操作会被提升,赋值和逻辑操作会被留在原地等待执行)

let VS var

重复声明同一个变量,表现不同
let VS var

变量作用范围,表现不同
let VS var

暂时性死区
let死区示例

上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋 值会报错。
因为let的暂时性死区特性,typeof也不是百分百安全的语句了,如果typeof遇到不存在的变量,会返回undefined,但是如果变量在同一个作用域中先使用typeof,再用let声明,就会立即报错。这是为了让大家养成良好的编程习惯,一定要先声明再使用变量。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复