ES6学习笔记

ES6学习笔记1

2018-08-13  本文已影响0人  whowhenhowxxx

let命令

var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6

JS的for循环有个特别之处,设置for循环变量的部分是一个父作用域,而其循环体是一个子作用域。

块级作用域

我们知道ES5没有块级作用域,但这会带来什么弊端?

var tmp = new Date();

function f() {
  console.log(tmp);
  if (false) {
    var tmp = 'hello world';
  }
}

f(); // undefined

在function作用域中,tmp因为变量提升,console语句打印的是未初始化的tmp。而我们实际只是想重用一下tmp这个变量名而已。立即调用表达式被let块级作用域替换

  1. 允许在块级作用域内声明函数。
  2. 函数声明类似于var,即会提升到全局作用域或函数作用域的头部。
  3. 同时,函数声明还会提升到所在的块级作用域的头部。

在浏览器的 ES6 环境中,块级作用域内声明的函数,行为类似于var声明的变量。

const命令

如果真的想将对象冻结,应该使用Object.freeze方法。此处与vue的冻结对象让其不再满足响应式变换的方法一致。

声明变量的方式:var,function,let,const,class,import(后四为ES6增加)

顶层对象的属性

上一篇 下一篇

猜你喜欢

热点阅读