前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6 学习笔记之新的语法特性

ES6 学习笔记之新的语法特性

作者头像
我与梦想有个约会
发布2020-01-06 10:28:56
4080
发布2020-01-06 10:28:56
举报
文章被收录于专栏:jiajia_deng

本文记录一些与 ES5 不同的语法特性,因为只记录了我比较关心的内容,所以记录的可能不全面。

块级作用于

代码语言:javascript
复制
{{{{
  {let insane = 'Hello World'}
  console.log(insane); // 报错
}}}};

由于 let insane 的声明在一个大括号中,出了这个大括号,变量 insane 就无法访问了,所以下面的 console.log 打印 insane 报错了,而在 ES5 中是不成立的。再来一个案例:

代码语言:javascript
复制
function f() { console.log('I am outside!'); }
(function () {
  if (false) {
    // 重复声明一次函数f
    function f() { console.log('I am inside!'); }
  }

  f();
}());

以上的代码在 ES5 环境中运行,由于函数 f 被重复声明,具有提升效果后,后面的 f 函数提升到了函数头部,所以调用时调用的是已经被提升到函数头部的 f 函数,那么 ES5 中会输出 I am inside,而 ES6 中,由于块级作用域的问题,则会输出 I am outside。但注意,我们现在是在 node 环境下,而如果在浏览器环境下“块级作用域内声明的函数,行为类似于 var 声明的变量。”,会有提升到函数作用域的头部,具体请看书中解释。

顶层对象的属性

代码语言:javascript
复制
var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1

let b = 1;
window.b // undefined

上面代码中描述了 var 和 let 与顶层对象之间的关系,ES6 中,let 和 const 等新增变量声明的关键字脱离了顶层对象的关系,不再互相干扰。

相关

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年2月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 块级作用于
  • 顶层对象的属性
    • 相关
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档