2018-03-26 es6学习笔记

1.const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。

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

3.顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与全局变量是等价的。

4.ES6 ,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。

var a=1;// 如果在 Node 的 REPL 环境,可以写成 global.a// 或者采用通用方法,写成 this.a

window.a // 1

let b=1;

window.b // undefined

5.全局环境中,this会返回顶层对象。但是,Node 模块和 ES6 模块中,this返回的是当前模块

6.下面代码可以保证各种环境里面,global对象都是存在的。

// CommonJS 的写法

require('system.global/shim')();

// ES6 模块的写法

import shim from 'system.global/shim';shim();

下面代码将顶层对象放入变量global

// CommonJS 的写法

var global = require('system.global')();

// ES6 模块的写法

import getGlobal from'system.global';

const global=getGlobal();

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 1,080评论 0赞 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 1,741评论 0赞 2
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 718评论 0赞 0
  • 《ECMAScript6 入门》阮一峰 读书笔记 let和constlet声明的变量仅在块级作用域内有效,var声...
    亲爱的孟良阅读 873评论 1赞 2
  • “小芸,你看这个铃铛。” 丹彤和小芸趁着放假,来到周边的一座古城中游玩。 在一个不起眼的小摊上,她一眼就看中了这个...
    霍小柒阅读 566评论 3赞 1

友情链接更多精彩内容