ECMAscript

ECMAScript

1. ECMAScript

ECMAScript:JavaScript的规范
ECMA-262号文件 - JavaScript
循环的方法:

var ary = [1,2,3,4,5];

//  for循环
for(var i = 0;i < ary.length;i++){
    console.log(ary[i]);
}

//  forEach
ary.forEach(function(value){
    console.log(value);
})

//  for..in..
for(var i in ary){
console.log(ary[i]);
}

for-of

//  for..of..用法 - ES6推出的循环 - 优点:
for(var k of ary){//k 指代循环中要循环多少次
    console.log(k);
    if(k == 3){
        break;
    }
}

for..of..的特点 - 用于遍历数据-例如数组中的值
1.是最直接、最简洁的遍历数组元素的语法
2.避免了for..in..(用于遍历对象属性)循环的所有缺陷
3.但与forEach()不同,它可以正确响应break、continue和return语句

for-of,不仅支持数组,还能支持大部分类数组对象,也支持字符串遍历,它将字符串视为一系列的Unicode字符来进行遍历
for(var chr of "){
    console.log(chr);
}

还支持Map和Set对象遍历
// 基于单词数组创建一个Set对象
var uniqueWoeds = new Set(words);
for(var word of uniqueWoeds){
    console.log(word);
}

安装bebal插件

安装bebal
npm list
npm install -g babel-cli   -  安装bebal插件

npm init  - 初始化整个项目
npm install bebal-preset-es2015  -  下载babel插件
babel 文件名 --prests es2015  - 对代码进行编译
babel 文件名 -o 新的文件目录 --prests es2015  - 对代码进行编译再转入到新的文件中

ES6生成器

function* addCount(){
    for(var i = 0;;i++){
        yield i;
    }
}
var add = addCount();
var count = document.getElementById("count");
count.onclick = function(){
    console.log(add.next().value);
}

反撇号(`)的操作

var name = "小强";
var Student = function(name){
    this.name = name;
}
var str = new Student("张三");
console.log(`hi,${str.name}`);
${} 只能写在`` 两个`之间

不定参数...

var sayHello = function(...values){
    for(var k of values){
        console.log(k);
    }
}
sayHello("李四",20);

var sayHello = function(name="没有名字",...values){//name="没有名字" - 将name 设置默认参数 "没有名字"
    console.log(["name",name])
    for(var k of values){
        console.log(k);
    }
}
sayHello("李四",20);

解构器

把一个数组或对象的属性赋给各种变量
var ary = [];
var [first,second,third] = ary;
console.log(first,second,third);

对象的解构
var stu = {name:"张三",age:20}
var {name:a,age:b} = stu;
console.log(a,b);

({a} = {a:100});
console.log(a);

箭头函数

箭头函数的this是没有自己的作用域,指向的是外部继承的this

var func = (a)=>{console.log(a)}
func(100);//100

var func = (a)=>console.log(a)
func(100);//100

var func = (a)=>{a++;console.log(a)}
func(100);//101

document.getElementById("count").onclick = () => console.log(123);//123

var stu = {name:"张三",age:20,show:function(){
    (() => console.log(this))()
}}
var {name:a,age:b} = stu;
console.log(a,b);
stu.show();//Object {name: "张三", age: 20}

第七种类型 - Symbols

可作为一个唯一的属性,它的值是独一无二
var key1 = Symbol();
var key2 = Symbol();
console.log(key1);//Symbol()
console.log(key2);//Symbol()
console.log(key1 == key2);//false

集合

Set(); - 本身就具有去重功能
var set1 = new Set();
set1.add(1);
set1.add(2);
set1.add(3);
set1.add(1);
for(var k of set1){
    console.log(k);//1 2 3
}

Map(); -
var map = new Map();
map.set("name","张飞");
map.set("age",20);
for(var [key,value] of map){
    console.log(key + " " + value);//name 张飞 age 20
}

类 - Class

class Student{
    set name(name){
        this._name = name;
    }
    get name(){
        return this._name;
    }
    show(){
        console.log("hi,"+this.name);
    }
}
var stu = new Student();
stu.name = "tom";
stu.show();

super();//调用父级的构造函数 - 必须写到第一句

let 和 const

let - 块作用域 - 在什么地方声明就属于谁,不存在变量提升的问题
const - 定义常量(不可变,变量不可更改)
时间: 2024-10-27 12:00:16

ECMAscript的相关文章

ECMAScript 5 Array Methods

ECMAScript 5 定义了9个新的数组方法,分别为: 1.forEach();  2.map();  3.filter();  4.every();  5.some();  6.reduce();  7.reduceRight();  8.indexOf();  9.lastIndexOf(); 概述:首先,大多数的方法都接受一个函数作为第一个参数,并为数组里的每个元素(或者一些元素)执行这个函数.在稀疏数组中(索引不以0开始,并且元素不连续),不存在的数组元素不调用函数参数.大多数实例中

前端开发者进阶之ECMAScript新特性--Object.create

前端开发者进阶之ECMAScript新特性[一]--Object.create Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指定属性的对象 参数:prototype 必需.  要用作原型的对象. 可以为 null.descriptors 可选. 包含一个或多个属性描述符的 JavaScript 对象."数据属性"是可获取且可设置值的属性. 数据属性描述符包含 value 特性,以及 writable.enumerab

ECMAScript基本数据类型

ECMAScript有5种基本数据类型 Undefined.Null.Boolean.Number 和 String. Undefined类型 未声明.声明但未初始化的变量typeof判定数据类型的时候都是 undefined 声明但未初始化的变量可以对其进行undefined值类型可以执行的操作 未声明的变量对其使用非赋值操作都会出错 var JsTest=function(){ var str; console.log(str==undefined);//true console.log(s

ECMAScript 6 小结

一.测试环境 1.node下几乎完全支持ES6,标准浏览器支持部分语法 2.chrome下使用ES6,为了保证可以正常使用大部分语法,需要使用严格模式,即在js开始部分加上'use strict' 3.ff下需要知道测试版本,即在script标签的type属性中加上 'application/javascript:version=1.7' 属性值 二.区别 1.声明变量 var 可以多次声明同一个属性 let 需要在严格模式下才能用,不允许重复声明,没有与解析过程(声明之前调用不是undefin

Javascript与ECMAScript

我们经常习惯性认为Javascript就是ECMAScript,但其实不是这样的. ECMAScript是一种脚本在语法和语义上的标准. 主要包括:语法.类型.语句.关键字.保留字.操作符.对象. 它与浏览器之间,没有半毛钱关系. 而Javascript是基于ECMAScript标准实现的.Javascript不仅仅包括ECMAScript,它其实还包含了其他东西. Javascript主要由三个部分组成,见下图: 在上面ECMAScript与Javascript的比较中,已经谈了ECMAScr

[Node.js] ECMAScript 6中的生成器及koa小析

原文地址:http://www.moye.me/2014/11/10/ecmascript-6-generator/ 引子 老听人说 koa大法好,这两天我也赶了把时髦:用 n 安上了node 0.11.12,下了个koa开启harmony模式试水.在一系列文档和贴子的教育下,大概认识到: koa 是TJ大神主导的新一代Web框架 koa 的中间件基于ES6的生成器函数(function *)形式 koa的核心流程库是 co,它能很好的解决Pyramid of Doom问题 在接触 Node.j

ECMAScript prototype的一个疑问。

既然是疑问 当然首先要贴一段代码. 背景: 探究js的原型继承模式. 疑惑:为何person1和person2的prototype 居然是相等的. 附: 1.Object.create(proto, [ propertiesObject ]) 参数 proto 一个对象,作为新创建对象的原型.或者为 null. propertiesObject 可选.该参数对象是一组属性与值,该对象的属性名称将是新创建的对象的属性名称,值是属性描述符(这些属性描述符的结构与Object.defineProper

ECMAScript 6初探附查询手册

我用jquery有5.6年了,可以用jq写出网页中超过80%常见的特效 ,对于ECMAScript 6我也是前年才知道的,不过一直没有系统的去研究,只知道是javascirpt的升级版,对它的了解仅此而已. 我是一个70%时间去思考,30%去做事的人,对于我一直从事的web前端来说,我一直认为web前端的终极目的是用户体验,用户体验是一个很无边界的概念,只需要科学的html5+规范的css3+jquery+细节+优化是可以做出体验很好的网页的,是的,这一切都不难,你只需要做到标准和细心. 对于E

ECMAScript 2016 获得批准

ECMA 国际批准了第七版的 ECMAScript 语言规范(ECMAScript 2016).ECMAScript 是标准化的 JavaScript 语言,1997年发布了第一版,1998年和1999年发布了第二和第三个版本.之后 ECMAScript 沉寂 了许多年,直到 Ajax 流行起来后标准工作才再次起步.2009年发布了第五个版本,2015年发布了第六个版本.ECMAScript现在每年发布一个新版规范,ECMAScript 2017已在制定之中. 第七个版本又被称为 ECMAScr