ES6学习(var,let,const区别)
本人写这个专题的博客是为了总结一下自己学习,使用还有刷题时学到的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区别)相关推荐
- “约见”面试官系列之常见面试题之第七十一篇之let和var和const区别(建议收藏)
**!**let /var定义变量 1,let 不具有变量提升,具有块级作用域,不允许重复定义 let定义的变量是块级的变量.使用 let 声明的变量,在声明前无法使用,否则将会导致错误:如果未在 l ...
- 在vue中let var 和const 区别
let和const 使用方法: (1).有没有感觉到在 javascript 使用var会发生变量提升,即脚本开始运行时, 变量已经存在了,但是没有值,所以会输出undefined. 而 ...
- var let const 区别
var变量提升 重复声明,顶层(window)属性,全局作用域和函数作用域 let 无提升,不能重复声明,不作为window属性,全局作用域和块级作用域({})暂时性死区(TDZ,同作用域下先声明,再 ...
- ES6基础(var let const 箭头函数)-学习笔记
文章目录 ES6基础(var let const 箭头函数)- 学习笔记 定义:var let const 箭头函数 数据结构 set map ES6基础(var let const 箭头函数)- 学 ...
- ES6 | let、const以及与var之间的区别
目录 一.let 1.声明变量 2.块儿级作用域 3.不存在变量提升 4.不影响作用域链 二.const 1.声明常量 2.一般常量使用大写(潜规则) 3.常量的值不能修改 4.块儿级作用域(cons ...
- ES6学习笔记02:let 与 const
ES6学习笔记02:let 与 const 用var声明的变量会造成全局污染,于是就产生了新的声明方式. 1.let 用let声明变量,必须先声明后使用. 在for循环头里用let定义循环变量i,那么 ...
- JavaScript重难点解析1(数据类型——var、let、const区别,类型补充,“===”、“typeof”、“instanceof”区别,Symbol数据类型)
JavaScript重难点解析1(数据类型) var.let.const区别: 类型补充 "==="."typeof"."instanceof&quo ...
- Var let const 的区别
Var let const 的区别 变量提升 var 存在变量提升 变量可以在声明之前调用 但是值为undefined. let ,const 不存在变量提升.他们声明的变量必须在声明后调用 如果在之 ...
- var和let、const区别
let和var都可以定义变量,而const定义的是常量 const a=123//无法更改值a = 1234 // 这时会报错,因为const定义的是常量 不可更改console.log(a) con ...
最新文章
- 解决ajax.open方法失效问题
- 利用计算机技术执行去自动化,计算机技术和自动化的关系.doc
- ubuntu 开机自动挂在windows下的分区
- 【转】VS2010安装包制作
- RegeX版本更新至2.0.0.4 加入英文语言包
- 示波器采样速率单位Ms/s、Gs/s
- c语言编程软件v,c语言编程工具mytc下载
- 君莫笑系列视频学习(3)
- 一个故事带你看透HTTPS(上)
- Flink CDC 新一代数据集成框架
- 扭转二战战局的密码系统 | 历史上的今天
- 实战技法 - 短线操盘 (3)
- Java计算每月工作天数
- 判断处理器是大端模式还是小端模式
- 锤子官方再曝新手机 暗示坚果Pro采用新后壳
- julia的Unicode 字符输入
- B - 东东学打牌(Week9.2作业)
- 离散数学期末考试必考知识点
- 2048小游戏逻辑代码(易懂)
- raft协议的一些理解
热门文章
- 百度之星大赛启动,聚焦目标检测,总奖池11.2万!
- Java与Python的区别告诉你,学什么看自己
- 为什么要学习Python?用数据给你展示八大理由!!
- linux挂接u盘视频,LINUX挂接U盘
- 【OpenCV】OpenCV函数精讲之 -- 访问图像中的像素--计时函数
- 使用spyder编译器单步调试python
- delphi 中如果不进行 closehandle 会怎么样_报考八一农大的十一大选择之七|带你走进不一样的“信息世界”...
- 不需要安全实验证也可以开微信号_热门行业:电子专用设备工程师证考试报名时间及报名须知...
- rsa java模数_RSA公私钥获取模数和质数
- Lambda表达式 入门实战