深入理解ES6之var,let,const区别

第一:块级范围内

var变量提升(不存在以下的问题)
let块级作用域,指定块的外部无法访问
const常量声明块级作用域,不会发生变量提升,声明后不可以改变因此需要初始化.(对于一个对象而言不可改变是指引用不可变,内容可以改变相当于java的final关键字)
1:禁止重复声明
2:暂时性死区
3:不在块级作用域范围内使用按照undefined处理

console.log(typeof value)//因为发生在块级作用域外面,不会因为暂时性死区而崩溃 
if(true){
   let value = "blue"
}

第二:循环范围内

1:let没有任何问题
2:var循环中的使用

var funcs = [];
for(var i=0;i<10;i++){
  funcs.push(functiong(){console.log(i)})
}
func.forEach(function(func){
  func()
});

因为变量i在循环的每次迭代中都被共享了 因此最后调用后的值会是打印10此10
3:循环内的常量声明
const在for循环中使用时第一次正常运行第二次i++时,会因为试图修改常量报错;
const能够在for-in与for-of循环内工作,因为循环为每次迭代创建了一个新的变量绑定而不是去试图修改已绑定的变量值。

第三:全局范围内

1:var会覆盖掉之前存在的同名属性,let和const不会污染全局属性

总结:

默认情况下应该使用const,只有知道变量需要被改变时才使用let,这样预期外的改动都可以算作是bug处理。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文属个人笔记,不做详解,仅供参考! let命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于...
    R_yan阅读 29,266评论 6 18
  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 4,569评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 5,551评论 0 2
  • let 基本用法 let命令,用来声明变量。用法类似于var,但声明的变量,只在let命令所在的代码块内有效。 f...
    oWSQo阅读 3,207评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 3,798评论 0 0

友情链接更多精彩内容