ES6

标签(空格分隔): ES6


严格模式 "use strict"

注意:严格模式也有作用域,如果在某个函数内部声明的话,只在该函数内部有作用
    1) 严格模式下全局变量声明必须用 var,否则会报错; var a = 10;

    2)严格模式下函数直接调用时,内部的this指向 undefined(非严格模式时,指向window);

    function fn(){
console.log(this);
}
fn(); //打印 undefined 3) 严格模式下 delete 不能删除全局变量,会报错; 4) 严格模式下,函数参数不能重名; 5)严格模式下,arguments设置为关键字,不能赋值,不追踪形参值的变化,只储存实参的集合; funtion fn1(a,b){
a = 10; //修改不起作用
console.log(a,b);
}
fn1(1,2); // 打印 [1,2] 6)函数必须声明在顶层,或者函数内部,不能在逻辑语句中声明; 7)函数表达式中声明一个有名函数的话,函数名会作为局部变量,只能在函数内部使用; var a = function fn2(){
console.log( fn2 );
}
a(); // 打印 整个函数 console.log( fn2 ); //会报错 ( fn2 is not defined)

es6新语法

let

let 声明变量

1. let 声明的变量在预解析的时候不会提前;
2.
2. let 声明的变量不会挂载再window上;
3.
3.let 声明得变量只能在当前作用域中使用; 例如for循环中用let 声明 i 再for循环外面,不能使用 i;
4. 用 let 声明变量,在当前块级作用域中 , 名字不能重复;
  • 暂存死区

    从块的开始到声明这段的区域

  • 什么是块级作用域

    一对{}包括的区域称为代码块;

    块级作用域指一个变量或者函数只在该区域才起作用。

  • 如何形成块级作用域 使用let关键字在代码块中声明的变量,只能在该代码块及子级作用域起作用

const 声明常量 常量的值不可以修改,行业惯例常量名全大写;

    const A = 10;
A = 20; // 会报错;

什么是解构赋值

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

数组的解构赋值语法
var [a, b, c] = [1, 2, 3]; 对象的解构赋值语法
var { foo, bar } = { foo: "aaa", bar: "bbb" }; 解构赋值时可以够变量赋默认值
var [a=0, b=0, c=0] = [1, 2];
console.log(a,b,c) //打印 1,2,0 解构赋值的作用
函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。
funtion fn(){ return [1,2,3];
}
var [a,b,c] = fn(); console.log(a,b,c); // 1,2,3

Number 方法扩展

Number.isNaN( XXX ); 检测传入的参数是否是NaN
Number.isFinite( n )用来检查一个数值(n)是否为有限的(finite);
例子:
Number.isFinite(NaN) // false
Number.isFinite(1/3) // true 无线小数也被判定为有限的
Number.isFinite(Infinity) // false

Math

Math.sign()  // 去除小数,取整数

Math.sign方法用来判断一个数到底是正数、负数、还是零。
它会返回五种值:
参数为正数,返回+1;
参数为负数,返回-1;
参数为0,返回0;
参数为-0,返回-0;
其他值,返回NaN。 Math.cbrt() // 求立方根 Math.cbrt(8) // 2

for of(便利线性集合(有序集合)的 value 值

遍历数组:
var arr = [1,2,3]
for (let value of arr){
console.log(value) // 1,2,3
}

for of 直接便利对象会报错,因为对像没有遍历器接口(对象是非线性的集合没有顺序);

Object.assign 合并对象

	var obj = {a:1,b:2};
var obj2 = {c:3};; console.log( Object.assign(obj,obj2) ) // {a:1,b:2,C:3} console.log( obj ) // {a:1,b:2,C:3}

函数参数的默认值:

function fn(x,y=3){
console.log( y );
return x + y;
}
fn(1,2) //打印 2
fn(1) //打印默认值3

rest形式的参数:

函数有多个参数时,为了方便接收可以用...arg (arg是一个变量) 来储存形参到数组中
function fn2(...arg){
console.log( arg ); }
fn2(1,2,3); 打印 //[1,2,3] function fn3(a,...arg){ console.log( arg );
}
fn3(1,4,5,6) 打印 //[4,5,6] 注意:arg必须是最后一个参数,后面不可以再写参数,会报错

(...arr)扩展运算符

把数组的每一项用逗号分割成一个参数序列;
var arr = [1,2,3,4];
console.log(...arr); 打印 // 1 2 3 4 function fn(...a){
console.log(a);
}
fn(...arr); // 打印结果[1,2,3,4] (...arr 把数组的每一项都转成参数传入函数, ...a 又把参数储存到数组中 )

箭头函数()=》{}

箭头函数注意事项:
1.箭头函数不能作为构造函数;
2. 箭头函数中不能使用 arguments可以用rest方式接收参数(...arg);
3.箭头函数中的this 指向定义函数时的作用域中的this; var a = ()=>{
console.log(1);
}
a(); // 打印 1 ---------- var x = 2;
document.onclick = function(){
this.x = 1;
let a = ()=>{
console.log(this.x);
}
a();
}
点击document的时候,打印 1 ;

(Set 和 Map )

Set 和 Map是数据结构,就像似数组和对象,的用来储存数据的仓库;

Set 类似数组,但是成员的值都是唯一的,没有重复的值。

Set([array])

ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

Set是一个构造函数,可以传入一个数组初始化默认值。

Set的一些方法

set.size

Set实例的成员个数(数组的长度)

set.add(value)

为Set的实例添加值

set.delete(value)

删除Set实例的值

set.has(value)

判断传入的参数是否为set的成员

set.clear()

清除set中所有成员

用Set和扩展用算符实现合并数组并且去重

var arr1 = [1,2,3];
var arr2 = [3,4,6]; [...arr1,...arr2] //利用扩展用算符展开到一个数组中; new Set([...arr1,...arr2]) //set去重 var arr = [ ...new Set([...arr1,...arr2]) ] //再展开到新数组

Map

ES6提供了map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

Map也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组

map.get(key) //通过key获取value

map.set(key,value) //为Map的实例添加新键值对

map.has(key) // 查找key值是否存在。

map.delete(key) //删除对应键值对 map.clear()

javascript ES5、ES6的一些知识的更多相关文章

  1. JavaScript Learning Paths(ES5/ES6/ES-Next)

    JavaScript Learning Paths(ES5/ES6/ES-Next) JavaScript Expert refs https://developer.mozilla.org/en-U ...

  2. Atitit js版本es5 es6新特性

    Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...

  3. 简述ES5 ES6

    很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...

  4. javascript的ES6学习总结(第二部分)

    1.数组循环 介绍数组循环之前,先回顾一下ES5数组的循环 (1)数组遍历(代替普通的for):arr.forEach(callback(val,index,arr){todo}) //val是数组的 ...

  5. Atitit js es5 es6新特性 attilax总结

    Atitit js es5 es6新特性 attilax总结 1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 ...

  6. javascript的ES6学习总结(第三部分)

    1.ES6中的面向对象的类 1.1.定义类 在ES5中,我们写一个类,通常是这么写的 function Person(name,age){ this.name = name; this.age = a ...

  7. React/React Native的 ES5 ES6 写法对照

      ES5 ES6 模块 var React = require("react-native); var { Image, Text, View } = React;   import Re ...

  8. Javascript语言精粹之正则表达式知识整理

    Javascript语言精粹之正则表达式知识整理 1.正则表达式思维导图 2.正则表达式常用示例 2.1 移除所有标签,只留下innerText var html = "<p>& ...

  9. javascript的ES6学习总结(第一部分)

    ES6(ESNext学习总结——第一部分) ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版. ECMA每年6月份,发布一个版本 201 ...

  10. 【转】React Native中ES5 ES6写法对照

    很多React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教程和例子都是 ...

随机推荐

  1. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  2. 借腾讯开源 VasDolly,谈谈 Android 签名和多渠道打包的原理!

    一.前言 Hi,大家好,我是承香墨影! 当我们需要发布一款 App 到应用市场的时候,一般需要我们针对不同的市场生产不同的渠道包,它们使用的是同一套代码,只是会包含一些各自的渠道信息,用于我们做数据分 ...

  3. JBoss AS7(Application Server 7)的Standalone模式和Domain模式

    JBoss AS7(Application Server 7)支持两种引导模式:standalone和domain(域). Standalone模式对于很多应用,并不需要domain管理能力,JBos ...

  4. java中try catch块的使用

    对于关流操作的时候,最好采用如下语句块: InputStream in=......; try{ try{ //some statemenet }finally{ //close stream in. ...

  5. QPS/TPS简介

    系统吞度量要素 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高,外部系统接口.IO影响速度越慢,系统吞吐能力越低,反之越高 ...

  6. Mysql根据指定字段的int值查出在当前列表的排名

    先看表结构和数据: DROP TABLE IF EXISTS `ndb_record`; CREATE TABLE `ndb_record` ( `id` bigint(20) NOT NULL AU ...

  7. Flask從入門到入土(三)——模板

    模板是一個包含響應文本的文件,其中包含佔位變量表示的動態部分,其具體值只是請求上下文中才能知道.使用真實值替換變量,再返回最終得到的響應字符串,這一過程稱爲渲染.爲了渲染模板,Flask使用了一個名爲 ...

  8. Spring 框架系列之事务管理

    1.事务回顾 (1).什么是事务: 事务是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. (2).事务特性(ACID) 原子性 :强调事务的不可分割 一致性 :事务的执行的 ...

  9. Spark第一个应用程序

    首先要对源码进行编译,生成对应hadoop版本的spark开发程序jar包,上篇已经写了具体的过程,这里不再赘述. 在安装spark的机器上,下载eclipse-java-x86_64版本,将spar ...

  10. 对ios、android开发程序员的14条忠告

    ————————本文摘自千锋教育(http://www.mobiletrain.org/)对ios\android开发程序员的14条忠告————————— 1.不要害怕在工作中学习. 只要有电脑,就可 ...