ES6 入门 (一)
块级作用域 —— let命令、const命令
-使用let命令声明的变量不会变量提升
(function(){
if(true){
let a = 5;
}
console.log(a); //报错
})
-使用const命令声明的变量必须在声明时赋值
const a; //报错
-使用const命令声明的变量,若赋值为一个对象时,它指向的地址不可改变,对象的属性就不可控了,
const a = {};
a.name = 'Tom';//正确
a = {name: 'Tom'};//报错
若需要使得对象冻结,则需要使用到Object.freeze方法
var obj = Object.freeze({});
obj.age = 18;//常规模式下无效,严格模式下报错
要将对象本身及对象的的属性都冻结,可以使用下面这个方法
var constantize = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach( (key, i) => {
if ( typeof obj[key] === 'object' ) {
constantize( obj[key] );
}
});
};
-ES6 声明变量的六种方法:var命令、function命令、let命令、const命令、import命令、class命令
-获取页面顶层对象的方法
// 方法一
(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');
};