ES6-let、const和块级作用域】的更多相关文章

本系列是在平时阅读.学习.实际项目中有关于es6中的新特性.用发的简单总结,目的是记录以备日后温习:本系列预计包含let/const.箭头函数.解构.常用新增方法.Symbol.Set&Map.Proxy.reflect.Class.Module.Iterator.Promise.Generator.async/await let/const为我们带来了什么? let 约束变量提升 (function foo() { console.log(a); let a = 1; })(); // Unc…
let声明 const声明 块级作用域 spread/rest 一.let声明与块作用域 在ES6之前,JavaScript中的作用域基本单元就是function.现在有了let就可以创建任意块的声明,也被称为作用域块.这意味者只需要“{}”就可以创建一个作用域.不再像var声明变量那样总归属于包含函数或全局.例如: var a = 2; { let a = 3 console.log(a); } console.log(a); 在相关的资料中看到有介绍,let声明在被正式列入标准之前长这样:…
1.介绍 总的来说,ES6是在ES2015的基础上改变了一些书写方式,开放了更多API,这样做的目的最终还是为了贴合实际开发的需要.如果说一门编程语言的诞生是天才的构思和实现,那它的发展无疑就是不断填坑的历史.ES6正是为了填一些坑. 我对ES6语法的学习,主要在浏览器端,参考阮一峰大神的ES6入门教程,添加了一些个人理解的注释和遇到的小问题,欢迎批评指正,共同进步.  浏览器端引用的依赖文件和本文案例  可在https://github.com/chanceLe/ES6-Basic-Synta…
本系列是在平时阅读.学习.实际项目中有关于es6中的新特性.用发的简单总结,目的是记录以备日后温习:本系列预计包含let/const.箭头函数.解构.常用新增方法.Symbol.Set&Map.Proxy.reflect.Class.Module.Iterator.Promise.Generator.async/await let/const为我们带来了什么? let 约束变量提升 (function foo() { console.log(a); let a = 1; })(); // Unc…
ES6学习笔记:块级作用域 作用域分类 全局作用域 局部作用域 块级作用域 全局作用域示例 var i=2; for (var i = 0; i < 10; i++) { } console.log(i);//10 这里就出现了意料之外的结果,此种原因是变量提升造成过的 局部作用域示例 !(function () { console.log(b);//undefined var b = 2; })() 为什么会输出undefined,而不是报错? 此种也是变量提升造成的意料之外的结果,上面代码等…
let声明变量 用法类似于var,但是所声明的变量只在let所在的代码块内有效. 1 . 在ES6环境下,let声明的变量不能在声明之前调用. 例: console.log(i); //会报错,这叫做暂时性死区,会提示 i 未定义 let i ; let不允许在变量还没声明完成前,赋值给其他变量,或者是自己 let a = a; //报错 应该先声明,再赋值 let a ; a = 1; 或者直接赋值 let a = 1; var b = b; //不会报错,但是会返回undefined,没有赋…
1.var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方声明的,都会提升到当前作用域的最顶部,这种行为叫做变量提升(Hoisting) const和let的异同点 相同点:const和let都是在当前块内有效,执行到块外会被销毁,也不存在变量提升(TDZ),不能重复声明. 不同点:const不能再赋值,let声明的变量可以重复赋值. 2.字符串 引用模板字面量进行字符串拼接 可以抛弃以前字符串 + 的操作了. const template…
前面的话 过去,javascript缺乏块级作用域,var声明时的声明提升.属性变量等行为让人困惑.ES6的新语法可以帮助我们更好地控制作用域.本文将详细介绍ES6新引入的块级作用域绑定机制.let和const声明机制及最佳实践 var声明 [变量提升] var声明会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined function getValue(condition){ if(condition){ var value = 'blue'; return value; }…
在前面我们已经讲解了 JavaScript 中变量提升的相关内容,正是由于 JavaScript 存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是 JavaScript 的一个重要设计缺陷. 虽然 ECMAScript6(以下简称 ES6)已经通过引入块级作用域并配合 let.const 关键字,来避开了这种设计缺陷,但是由于 JavaScript 需要保持向下兼容,所以变量提升在相当长一段时间内还会继续存在.这也加大了你理解概念的难度,因为既要理解新的机制,又要理解变量提升这套机制…
一.基本语法-let命令 (1)ES6新增了let命令,用来声明变量.所声明的变量,只在let命令所在的代码块内有效. 循环的计数器,就很合适使用let命令.计数器i只在for循环体内有效,在循环体外引用就会报错. 另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域. (2)不存在变量提升 var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined. 为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在…