ES6 笔记(常量&&变量)

2018-07-30  本文已影响212人  浮生随笔

ES6 笔记(常量&&变量)

变量&&常量

新特性

  1. ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

  2. 变量提升:var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined;为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

  3. 暂时性死区:在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”;

```
var tmp = 123;

if (true) {
tmp = 'abc'; // ReferenceError  死区
let tmp;
}
```

> let不允许在相同作用域内,重复声明同一个变量。

块级作用域

块级作用域是一个语句,将多个操作封装在一起,没有返回值。
在块级作用域之前加上do,使它变为do表达式。会得到整个块级作用域的返回值

const:

//冻结对象属性:
var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === 'object' ) {
      constantize( obj[key] );
    }
  });
};

变量声明:

ES5 只有两种声明变量的方法:var命令和function命令。ES6除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有6种声明变量的方法

// 方法一
(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模块的写法
import getGlobal from 'system.global';
const global = getGlobal();

上一篇 下一篇

猜你喜欢

热点阅读