总结一下Ecmascript和Javascript不一样的地方(1)
2016-06-01 00:00
218 查看
摘要: ES6的语法有很多和过去Javascript不一样的地方,记录一下方便注意。
ES6的语法有很多和过去Javascript不一样的地方,记录一下方便注意。
#1.let和const命令
##let命令
声明变量,只在let所在的代码块内有效,并且不许重复声明。
注意和var的区别:
var在全局内有效,会发生“变量提升”。
ES6规定,如果区块存在let和const命令,则该区块形成封闭作用域(称为“暂时性死区”,temporal dead zone,TDZ),在声明之前使用变量,会报错。
块级作用域
##const命令
声明常量,一旦声明,其值就不能改变。
跨模块常量
##全局对象
全局对象是最顶层的对象,在浏览器环境中指的是
在Node.js中全局对象必须显示声明成global对象的属性。
#2.变量的解构赋值
##数组
解构赋值相当于模式匹配(可参考Erlang);
解构赋值允许指定默认值;
##对象
注意和数组的区别:
对象没有次序,按照同名对应
##字符串、数值和布尔值
##函数
##解构赋值的用途
变换变量的值;
从函数返回多个值;
函数只能返回一个值,但放在数组或对象中可以实现返回多个值
函数参数的定义;
提取JSON数据
解构赋值对提取JSON对象中的数据尤其有用
指定函数参数的默认值
遍历Map结构;
只想获得键名
只想获得键值
引入模块的指定方法
加载模块时,往往需要指定引入具体方法
参考:
ES6标准入门,阮一峰
ES6的语法有很多和过去Javascript不一样的地方,记录一下方便注意。
#1.let和const命令
##let命令
声明变量,只在let所在的代码块内有效,并且不许重复声明。
注意和var的区别:
var在全局内有效,会发生“变量提升”。
ES6规定,如果区块存在let和const命令,则该区块形成封闭作用域(称为“暂时性死区”,temporal dead zone,TDZ),在声明之前使用变量,会报错。
块级作用域
##const命令
声明常量,一旦声明,其值就不能改变。
跨模块常量
//constants.js export const A = 1; export const B = 2; export const C = 3; //test1.js import * as constants from './constants'; console.log(constants.A); // 1 console.log(constants.B); // 2 console.log(constants.C); // 3 //test2.js import {A, B, C} from './constants'; console.log(A); // 1 console.log(B); // 2 console.log(C); // 3
##全局对象
全局对象是最顶层的对象,在浏览器环境中指的是
window对象,在Node.js中指的是
global对象。
在Node.js中全局对象必须显示声明成global对象的属性。
#2.变量的解构赋值
##数组
解构赋值相当于模式匹配(可参考Erlang);
解构赋值允许指定默认值;
##对象
let {foo, bar} = {foo:"aaa", bar:"bbb"}; console.log(foo); // "aaa" console.log(bar); // "bbb"
注意和数组的区别:
对象没有次序,按照同名对应
##字符串、数值和布尔值
##函数
##解构赋值的用途
变换变量的值;
[x, y] = [y, x];
从函数返回多个值;
函数只能返回一个值,但放在数组或对象中可以实现返回多个值
函数参数的定义;
提取JSON数据
解构赋值对提取JSON对象中的数据尤其有用
指定函数参数的默认值
遍历Map结构;
var map = new Map(); map.set('first', 'hello'); map.set('second', 'world'); for (let [key, value] of map) { console.log(key + "is" + value); }
只想获得键名
let [key] of map
只想获得键值
let [,value] of map
引入模块的指定方法
加载模块时,往往需要指定引入具体方法
const { SourceMapConsumer, SourceNode} = require("source-map");
参考:
ES6标准入门,阮一峰
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享