本人写这个专题的博客是为了总结一下自己学习,使用还有刷题时学到的ES6知识点,并做以归纳。

var,let,const

三个属性都可以声明变量。

作用域

var  重新赋值,重新定义变量,可以重复声明,但是后者的值会覆盖前者的值。

作用域:function(如果在全局中,作用域为windows)。var声明的变量会暴露在全局。

let         作用域:block,块级作用域,即 {} 内。

声明的变量只在其block中显示,不暴露在全局。不能重复声明变量。

const      与let一样,作用域都是block,而且不暴露在全局。与let一样不能重新赋值。但是引用的类型值可以更新,即可以在对象中进行更改:

使用Object.freeze()方法可以强制不允许更改:

立即执行函数,私有化变量

window变量举例:

这样会直接更改window中的name属性。使用立即执行函数:

然而这样不会有利于代码的可读性,而且这样也没有什么意义。于是采用let和const的 块级作用域这一特点实现:

{}中,即表示块级作用域

复习一下之前学习闭包时的一个题。for循环

for(var i=0;i<10;i++){console.log(i);
}

输出自然是0~10之内的数字。然而在for循环中如果有其他的操作:

for(var i=0;i<10;i++){console.log(i);setTimeout(function(){console.log(`i:${i}`)
},1000)
}

第一个输出就是0~10,然而第二个输出:i : 10。在之前的闭包中有写过这个问题:Mr.J--闭包学习

对于上面的问题,如果想输出对应输出的索引值,只需要将 var 更改 let 即可。(最近在Code wars中刷题已经逐渐减少了var的使用频率而改用let关键字)

变量提升

var    具有变量提升,(Mr.J -- 变量提升)而对于let和const中不能进行变量提升。

对于这个问题的解决:

  • 默认使用const
  • 当变量进行重新绑定或者重新更新使用let
  • 尽量不在ES6中使用var

ES6学习(var,let,const区别)相关推荐

  1. “约见”面试官系列之常见面试题之第七十一篇之let和var和const区别(建议收藏)

    **!**let /var定义变量 1,let 不具有变量提升,具有块级作用域,不允许重复定义 let定义的变量是块级的变量.使用 let 声明的变量,在声明前无法使用,否则将会导致错误:如果未在 l ...

  2. 在vue中let var 和const 区别

    let和const   使用方法: (1).有没有感觉到在     javascript  使用var会发生变量提升,即脚本开始运行时, 变量已经存在了,但是没有值,所以会输出undefined. 而 ...

  3. var let const 区别

    var变量提升 重复声明,顶层(window)属性,全局作用域和函数作用域 let 无提升,不能重复声明,不作为window属性,全局作用域和块级作用域({})暂时性死区(TDZ,同作用域下先声明,再 ...

  4. ES6基础(var let const 箭头函数)-学习笔记

    文章目录 ES6基础(var let const 箭头函数)- 学习笔记 定义:var let const 箭头函数 数据结构 set map ES6基础(var let const 箭头函数)- 学 ...

  5. ES6 | let、const以及与var之间的区别

    目录 一.let 1.声明变量 2.块儿级作用域 3.不存在变量提升 4.不影响作用域链 二.const 1.声明常量 2.一般常量使用大写(潜规则) 3.常量的值不能修改 4.块儿级作用域(cons ...

  6. ES6学习笔记02:let 与 const

    ES6学习笔记02:let 与 const 用var声明的变量会造成全局污染,于是就产生了新的声明方式. 1.let 用let声明变量,必须先声明后使用. 在for循环头里用let定义循环变量i,那么 ...

  7. JavaScript重难点解析1(数据类型——var、let、const区别,类型补充,“===”、“typeof”、“instanceof”区别,Symbol数据类型)

    JavaScript重难点解析1(数据类型) var.let.const区别: 类型补充 "==="."typeof"."instanceof&quo ...

  8. Var let const 的区别

    Var let const 的区别 变量提升 var 存在变量提升 变量可以在声明之前调用 但是值为undefined. let ,const 不存在变量提升.他们声明的变量必须在声明后调用 如果在之 ...

  9. var和let、const区别

    let和var都可以定义变量,而const定义的是常量 const a=123//无法更改值a = 1234 // 这时会报错,因为const定义的是常量 不可更改console.log(a) con ...

最新文章

  1. 解决ajax.open方法失效问题
  2. 利用计算机技术执行去自动化,计算机技术和自动化的关系.doc
  3. ubuntu 开机自动挂在windows下的分区
  4. 【转】VS2010安装包制作
  5. RegeX版本更新至2.0.0.4 加入英文语言包
  6. 示波器采样速率单位Ms/s、Gs/s
  7. c语言编程软件v,c语言编程工具mytc下载
  8. 君莫笑系列视频学习(3)
  9. 一个故事带你看透HTTPS(上)
  10. Flink CDC 新一代数据集成框架
  11. 扭转二战战局的密码系统 | 历史上的今天
  12. 实战技法 - 短线操盘 (3)
  13. Java计算每月工作天数
  14. 判断处理器是大端模式还是小端模式
  15. 锤子官方再曝新手机 暗示坚果Pro采用新后壳
  16. julia的Unicode 字符输入
  17. B - 东东学打牌(Week9.2作业)
  18. 离散数学期末考试必考知识点
  19. 2048小游戏逻辑代码(易懂)
  20. raft协议的一些理解

热门文章

  1. 百度之星大赛启动,聚焦目标检测,总奖池11.2万!
  2. Java与Python的区别告诉你,学什么看自己
  3. 为什么要学习Python?用数据给你展示八大理由!!
  4. linux挂接u盘视频,LINUX挂接U盘
  5. 【OpenCV】OpenCV函数精讲之 -- 访问图像中的像素--计时函数
  6. 使用spyder编译器单步调试python
  7. delphi 中如果不进行 closehandle 会怎么样_报考八一农大的十一大选择之七|带你走进不一样的“信息世界”...
  8. 不需要安全实验证也可以开微信号_热门行业:电子专用设备工程师证考试报名时间及报名须知...
  9. rsa java模数_RSA公私钥获取模数和质数
  10. Lambda表达式 入门实战