es6入门第一章let和const笔记

作者: 阿蒙 时间: 2017-6-26 标签: JavaScript 浏览: 1742 评论: 0

1. 作用域仅存在于当前块级作用域,当前声明(var 作用域是函数作用域,而不是块级作用域。 并且可以重复声明). 

2. var 存在变量提升 即 console.log(a); var a = 16;  // undefined   用let声明则抛出一个错误。 即使a是全局变量也不行。 及在当前块级作用域中, 变量不可以在使用之后声明。 typeof也会抛出一个错误。

3. 外层作用域中let声明的变量与子作用域中let声明的变量互不影响 let a = 6; { left a = 7;} a; // 6

4. 函数只能在函数作用域和顶层作用域中声明, 不能在块级作用域中声明。 应该避免在块级作用域中声明,如果需要需写成函数表达式

 不过浏览器中还是可以在块级中声明。

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

5.  const 一旦声明就必须赋值, 并且声明之后不可改变, 这里的不可改变是指向不变,对于基本类型来讲就是不可改变, 对于对象来说只是指针不能改变,实际的内存地址是可以改变的。

6. let 和 const声明的全局对象不是顶层对象的属性(window, global)。

7. 不同环境下获取的顶层对象是不同的。 

兼容性获取顶层对象的写法 

// 方法一
(typeof window !== 'undefined'
   ? window
   : (typeof process === 'object' &&
      typeof require === 'function' &&
      typeof global === 'object')
     ? global
     : this);

// 方法二
var getGlobal = function () {
  if (typeof self !== 'undefined') { return self; }
  if (typeof window !== 'undefined') { return window; }
  if (typeof global !== 'undefined') { return global; }
  throw new Error('unable to locate global object');
};






0

本文相关标签: es6

赞助商

发表评论: