1、const、let和var

在es6新特特性这,let和const可以达到局部作用域的效果。

1.1 var

var a = 4
function say () {console.log(a)var a
}
say()

大家在网上听的最多的就是var会进行变量提升,事实也是如此。上面例子中,函数外部声明变量a赋值为4。当调用函数时,内部的变量a会提到log前提前声明,并且默认赋值为undefined。然后才log。如下图

var a = 4
function say () {var a = undefinedconsole.log(a)
}
say()

所以你们看到的结果为undifind,同理下面例子也是如此

console.log(b)
var b = 4
console.log(b)

上面例子会先变量声明赋值为undefined,然后在将4赋值给变量b

var b = undefined
console.log(b)
b = 4
console.log(b)

1.2 let/const

在let中,很多人在面试中都会回答到。他与var最大的区别是不会变量提升,其实不然。可以看下面这个例子

let a = 1
function say () {console.log(a)let a = 2
}
say()

按照大多数人的了解,这个结果不会变量提升,所以应该输入外部的1才对。但是结果却是报错,下面看看分析。

let a = 1
function say () {let aconsole.log(a)a = 2
}

在调用say函数的时候,他发现在局部作用域(函数内部)里有一个变量声明,它依旧会将其变量提升,只是这次与var的区别不太一样,var在提升的同时,他会进行一个赋值为undefined,但是let只是单纯的变量提升。所以你会发现这个是报错的。

const 也是一样的道理,只是在const中不能对变量进行更改。

2、TDZ时间死区

其实刚刚我们已经接触到了时间死区,只是你没有发现。

let a = 520
function say () {// 时间死区开始console.log(a)// 时间死区结束let a = 520
}

在上面例子中,因为我们下方使用let对a进行变量声明后,造成的变量提升,导致我们无法对a进行修改。这个位置就是我们说的时间死区。

浅谈ES6后的TDZ时间死区相关推荐

  1. 浅谈ES6原生Promise

    ES6标准出炉之前,一个幽灵,回调的幽灵,游荡在JavaScript世界. 正所谓: 世界本没有回调,写的人多了,也就有了})})})})}). Promise的兴起,是因为异步方法调用中,往往会出现 ...

  2. 浅谈贷后管理之贷后跟踪——微金时代解决方案

    近年来,小贷公司贷款管理体制.机制和制度流程不断完善,特别在贷前调查.风险管控.信贷审批等方面取得长足进步,但是贷后管理始终是一个薄弱环节.从长远看,贷后管理的短板如果不解决,必将制约小贷公司核心竞争 ...

  3. 浅谈es6 promise

    本文是借鉴于ac黄的博客. 接触es6也有几个月了,貌似没有系统的去学习过它,总是用到什么,查查什么.今天就说下es6中的promise对象. 先说说promise解决了什么问题? 写前端的同学都经常 ...

  4. 小林浅谈雨后需保养 大雨过后爱车保养维护常识

    雨天洗车保护车漆 不少车主都认为,雨天车辆表面的尘土被雨水 冲刷干净之后,省去了洗车的麻烦.但事实上,雨后如果不及时洗车,会对车漆造成很大伤害,所以雨后的车辆清洗工作比任何时候都更重要.雨水中往往含有 ...

  5. 浅谈市场降温后的区块链发展前景

    近期以来,以区块链技术为核心延伸出来的整个市场都有一种降温的趋势.特别是在国外的加密市场,更是一度惨淡,整个加密市场可以说是一度大崩. 尽管是在这样一股下行的趋势下,目前资本在区块链领域中的投资依然持 ...

  6. antvf2动态数据_浅谈ES6基础——Promise

    import { notification } from 'antd'; fetch(url, newOptions) .then(checkStatus) //checkStatus中主要是对res ...

  7. 初中计算机课教什么时候,浅谈初中信息技术课教学

    浅谈初中信息技术课教学 时间: 2013-11-26 栏目: 浅谈初中信息技术课教学 浅谈初中信息技术课教学 伍建洪 [摘要]初中信息技术课,教师要关心爱护学生,真正的融入到学生当中去,在教学中要联系 ...

  8. [2017.11.11特辑]以一个光棍节表白案例浅谈ECMAScript6模块化的使用方法

    双十一,购物节与光棍节,在这个特殊的日子里研究了一下模块化开发的我,突然想结合这个日子,以一个表白的例子浅谈es6模块化的用法. 在之前的 javascript 中一直是没有模块系统的,随着JavaS ...

  9. JavaScript 中的 require / exports、import / export、浅谈JavaScript、ES5、ES6

    Node.js 的基础教学 之 exports 和 module.exports:https://zhuanlan.zhihu.com/p/82057593 浅谈 JavaScript.ES5.ES6 ...

最新文章

  1. linux下必看的60个命令
  2. mysql bit 和 tinyint 的区别及使用场景?
  3. ORA-01078: failure in processing system parameters
  4. React Native常用第三方汇总
  5. springmvc中@PathVariable和@RequestParam的区别(百度收集)
  6. u8系统怎么连接服务器,u8客户端如何连接服务器
  7. 遭遇Trojan.PSW.ZhengTu,Trojan.PSW.OnlineGames,Trojan.PSW.ZhuXian.b等
  8. java epics_EPICS超入门-KEKe+e-.PDF
  9. Sorry, The number you dialed is power off.
  10. mac svn 服务器及客户端
  11. 【译】Inside SafetyNet - part 3
  12. 模拟微信接口时,提示“请在微信客户端打开链接”(转)
  13. Reactive简介
  14. WebRTC实时通信系列教程8 打通P2P连接和信令通信
  15. 画风突变!用友云全新定义数字企业智能服务
  16. AXI Quad SPI读写Flash做远程升级
  17. 【基于Web停车场管理系统——开题报告 分享(仅供参考呀)】
  18. LEADTOOLS V22.0 Patch
  19. SharePoint-Office365中修改顶部导航
  20. 【Java】哪些操作会使线程释放锁资源

热门文章

  1. Spring Boot入门教程(四十):微信支付集成-刷卡支付
  2. 无线网卡安装后显示无服务器,USB无线网卡安装后连接图标不显示怎么办【解决方法】...
  3. 无限超越超级机器人nds_无限边境超级机器人大战OG传说超越隐藏宝箱
  4. ForgivingExceptionHandler: An unexpected connection driver error occured (Exception message: Socket
  5. 五子棋(含较高级的人机对战)
  6. 史上最全场景文字检测资源合集(70篇重要论文 + 15个开源代码 + 176个实验结果 + 1305个统计信息)...
  7. C22_OC12-protocol协议
  8. WIN7封装教程2018系列(六)—封装
  9. 穷人的语义处理工具箱之二:语义编辑距离
  10. 《老司机,带带我》之考驾照