es6中一些基本的使用方法

const 定义常量

let 块级变量

用let定义的变量只在块当中起作用,离开变量外界的块(括号)就会被销毁。

模板字面量

用于字符串拼接和写模板,使用 ` (反引号,左上角波浪线),变量使用${}

 1 var a="大帅比";
2 var b="你呢";
3 console.log( `my name is ${a},${b}?` ); //my name is 大帅比,你呢?
4
5 var tpl=`<ul class="haha">
6 <li class="active">1</li>
7 <li>2</li>
8 <li>3</li>
9 <li>4</li>
10 <li>5</li>
11 </ul>` //不用加 \n来换行了

解构赋值

交换值

1 var a=1;
2 var b=2;
3 [a,b]=[b,a];
4 console.log(a,b); // 2 1

从数组里获得元素

1 var array=[1,2,3,4];
2 var [a, ,b]=array;
3 console.log(a,b); // 1 3

参数解构

1 var user={name:"李大白",age:"23",sex:"男"}
2 function getUser( {name,age} ){
3 return `我叫${name},今年${age}岁。`;
4 }
5 console.log( getUser(user) ); // 我叫李大白,今年23岁。

返回值的解构

1 function margin(){
2 var left=1,right=2,top=3,bottom=4;
3 return {left,right,top,bottom}
4 }
5 var {left,bottom}=margin();
6 console.log(left,bottom); // 1 4

深度匹配

1 function setting(){
2 return { display:{color:'red'},keyboard:{layout:'querty'} }
3 }
4
5 var { display:{color: dis_color },keyboard:{layout: key_layout } }=setting();
6 console.log(dis_color,key_layout); // red querty

类和继承

 1 class Animal{
2 constructor(name){ //构造函数
3 this.name=name;
4 }
5 speak(){ //方法
6 console.log(this.name+" makes a noise");
7 }
8 }
9 var animal=new Animal("dog");
10 animal.speak(); //dog makes a noise

如果在es5中,要这么写

 1 var Animal=(function(){
2 function Myconstructor(name){
3 this.name=name;
4 }
5 Myconstructor.prototype.speak=function(){
6 console.log(this.name+" makes a noise");
7 }
8 return Myconstructor;
9 })();
10
11 var animal=new Animal("dog");
12 animal.speak(); //dog makes a noise

继承

1 class Cat extends Animal{
2 speak(){
3 super.speak();
4 }
5 }
6 var cat=new Cat("短尾猫");
7 cat.speak(); //短尾猫 makes a noise

extends关键字代表继承,super关键字代表父类

箭头函数

箭头函数相当于匿名函数,并且简化了函数定义。()中放参数,没有参数就省略,箭头后面是函数体。

 1 var fun1=(x)=>x*x;
2 var fun2=(x,y)=>{
3 if(x>y){
4 return true;
5 }else{
6 return false;
7 }
8 }
9 var set=(name,age)=>( {name:name,age:age} ) //直接返回对象需要加小括号
10
11 fun1(4); //16
12 fun2(7,1); // true
13 set("李大白","1000"); // Object {name: "李大白", age: "1000"}

es5中this比较坑,当需要外层的this时有几种方法

用变量存储引用

1 var _this=this;
2 $(".btn").click(function(){
3 _this.sendData();
4 });

直接绑定

1 $(".btn").click(function(){
2 this.sendData();
3 }.bind(this) );

es6中

1 $(".btn").click( ()=> this.sendData() );  //箭头函数this绑定的是词法作用域,肯定指向外层,哪怕用apply,call也没法改变

遍历for...of

es5的遍历

1 var array=["a","b","c","d"];
2 for (var i=0,l=array.length;i<l;i++){
3 var a=array[i];
4 console.log(a);
5 }

或者

1 array.forEach(function(a){  //不能用break语句跳出循环,且不能在这个封闭的函数内使用return语句
2 console.log(a);
3 })

es6  for...of

1 for(var a of array ){  //可以使用break,continue,return等语句
2 console.log(a);
3 }

  for...of和for...in的区别,for...in主要用于获取属性名,如果用来遍历数组,确实可以获得序号,但序号都是字符串形式。

默认参数

1 function abc(x=0,y=2,flag=true){
2 console.log(x,y,flag);
3 }
4
5 abc(); // 0 2 true
6 abc(4,0,false); // 4 0 false

剩余参数

用于参数数量不固定的场合,剩余参数前面需要加...

1 function reduce(base,...nums){
2 var result=base;
3 for(var i of nums){
4 result-=i;
5 }
6 return result;
7 }
8 reduce(10,5,3); // 2

es5

1 function reduce(base){
2 var result=base;
3 [].shift.apply(arguments);
4 for(var i=0,l=arguments.length;i<l;i++){
5 result-=arguments[i];
6 }
7 return result;
8 }
9 reduce(10,5,3); // 2

展开运算符 ...

1 Math.max(2,100,1,6,43);  //100
2 Math.max([2,100,1,6,43]); //NaN
3 Math.max(...[2,100,1,6,43]); //100 展开的效果

数组拼接也可以使用...

1 arr1=[2,100,1,6,43];
2 arr2=["a","b","c","d"];
3 arr3=arr1.concat(arr2);
4 arr4=[...arr1,...arr2];
5
6 console.log( arr3 ); // [2, 100, 1, 6, 43, "a", "b", "c", "d"]
7 console.log( arr4 ); // [2, 100, 1, 6, 43, "a", "b", "c", "d"]

es6中一些基本的使用方法的更多相关文章

  1. ES5和ES6中对于继承的实现方法

    在ES5继承的实现非常有趣的,由于没有传统面向对象类的概念,Javascript利用原型链的特性来实现继承,这其中有很多的属性指向和需要注意的地方. 原型链的特点和实现已经在之前的一篇整理说过了,就是 ...

  2. ES6中函数新增的方式方法

    ---恢复内容开始---   绪 言 ES6 大家对JavaScript中的函数都不陌生.今天我就为大家带来ES6中关于函数的一些扩展方式和方法. 1.1函数形参的默认值 1.1.1基本用法 ES6 ...

  3. es6中reduce()方法和reduceRight()方法

    es6中reduce()方法从左往右开始 参数:prev:它是上一次调用回调时返回的结果,每次调用的结果都会给prev cur:当前的元素 index:当前的索引 arr:循环的数组 返回值:函数累计 ...

  4. ES6中新增let命令使用方法

     在ES6中新增了let命令,该命令的用法与var 类似,但是所声明的变量只能在let命令所在的代码块(最接近let 命令的大括号内)中有效果.但是let 又有一些不同于var 的特性. 1.let定 ...

  5. ES6中的模板字符串使用方法

    传统的 JavaScript 语言,输出模板通常是这样写的. $('#result').append( 'There are <b>' + basket.count + '</b&g ...

  6. Node.js 中使用 ES6 中的 import / export 的方法大全

    https://blog.csdn.net/universsky2015/article/details/83754741

  7. ES6中的Promise使用方法与总结

    在javascript中,代码是单线程执行的,对于一些比较耗时的IO操作,都是通过异步回调函数来实现的. 但是这样会存在一个问题,当下一个的操作需要上一个操作的结果时,我们只能把代码嵌到上一个操作的回 ...

  8. ES6中的数组方法扩展

    上一篇文章小编简单介绍了在ES6中,一些常用的方法和一些简单的应用,在这篇文章中,小编将针对ES6中数组常用方法进行扩展,相信经过这篇文章之后,每一位小伙伴下班时间会有所提前,就算从原来的996变成9 ...

  9. ES6 中 let 和 const 总结

    目录 let const 1. let要好好用 1. 基本用法 2. let声明的变量不存在变量提升 3. TDZ(temporal dead zone)暂时性死区 4. 不允许重复声明 2. 块级作 ...

随机推荐

  1. Win10编译SqlCipher步骤

    准备工作 Visual Studio 2015,其他版本未验证,估计问题不大 ActiveState ActivePerl,用于编译OpenSSL Mingw,在官网下载minimum install ...

  2. 通过 AJAX 加载的 JavaScript 脚本的调试

     //# sourceURL=  注意#后面有一个空格.

  3. java多线程编程——锁优化

    并发环境下进行编程时,需要使用锁机制来同步多线程间的操作,保证共享资源的互斥访问.加锁会带来性能上的损坏,似乎是众所周知的事情.然而,加锁本身不会带来多少的性能消耗,性能主要是在线程的获取锁的过程.如 ...

  4. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  5. Java反射获取字节码以及判断类型

    一.获取类的字节码的三种方法: 1.使用Class.class   Class<?> c1=String.class; 2.使用实例.getClass()   String s= Clas ...

  6. Egret学习笔记 (Egret打飞机-4.添加主角飞机和实现飞行效果)

    今天继续写点击了开始之后,添加一个飞机到场景中,然后这个飞机的尾巴还在冒火的那种感觉 先拆解一下步骤 1.首先完成飞机容器的图片加载 2.然后把容器添加到场景中 3.然后实现动画 -首先,我们新建一个 ...

  7. Docker安装weblogic

    Docker容器安装weblogic详细教程 前提:已经安装后Docker,并且能正常使用 (1)获取镜像:  docker pull ismaleiva90/weblogic12 docker pu ...

  8. uva12563

    一个简单的0-1背包,背包容量为t-1,每个物品价值为1,代价为t[i].背包容量为t-1而不是t的原因是留1s唱<劲歌金曲>. AC代码: #include<cstdio> ...

  9. poj1011 && uva307 DFS + 剪枝

    将木棒从大到小排列,保证每次的选择都是最长可选的木棒. 剪枝: 1 . 如果第 i 根木棒被选择却无法成功拼接,那么后面与其长度相同的也不能选择. 2 . 如果第 cnt + 1 根木棒无法成功拼接, ...

  10. chmod 与大写 X

    chmod(1) 手册页中对权限位的描述中提及到 rwxXst 六个权限标记, rwx 是几乎所有 Linux 初学者都会学到的,更进者会了解到 st 两个标记,但 X 却少有提起.所以笔者大致了解了 ...