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'); };
本文相关标签: es6
发表评论: