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. C#常用代码片段备忘

    以下是从visual studio中整理出来的常用代码片段,以作备忘 快捷键: eh 用途: 类中事件实现函数模板 private void MyMethod(object sender, Event ...

  2. python3加密解密模块 cryptography

    cryptography 的目标是成为"人类易于使用的密码学包cryptography for humans",就像 requests 是"人类易于使用的 HTTP 库H ...

  3. javaweb下载文件模板

    import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import javax ...

  4. 游戏服务器设计之NPC系统

    游戏服务器设计之NPC系统 简介 NPC系统是游戏中非常重要的系统,设计的好坏很大程度上影响游戏的体验.NPC在游戏中有如下作用: 引导玩家体验游戏内容,一般游戏内有很多主线.支线任务,而任务的介绍. ...

  5. PyPI使用国内源

    默认的pip源的速度实在无法忍受,于是便搜集了一些国内的pip源,如下: 阿里云 https://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi. ...

  6. [bzoj2286][Sdoi 2011]消耗战

    [bzoj2286]消耗战 标签: 虚树 DP 题目链接 题解 很容易找出\(O(mn)\)的做法. 只需要每次都dp一遍. 但是m和n是同阶的,所以这样肯定会T的. 注意到dp的时候有很多节点是不需 ...

  7. [记录]一则清理MySQL大表以释放磁盘空间的案例

    一则清理MySQL大表以释放磁盘空间的案例 一.基本情况: 1.dbtest库554G,先清理st_online_time_away_ds(37G)表的数据,保留半年的数据: 1)删除的数据:sele ...

  8. QWebSocket 客户端

    QWebSocket 客户端 Public Function - QWebSocket(const QString &origin = QString(),QWebSocketProtocol ...

  9. SSRF漏洞总结

    SSRF漏洞:(服务端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.(正是因为它是由服务端发起的,所以它能够请求到与它相连而 ...

  10. 网络基础tcp/ip协议三

    数据链路层:(位于网络层与物理层之间) 数据链路层的功能: 数据链路的建立,维护. 帧包装,帧传输,帧同步. 帧的差错恢复. 流量的控制. 以太网:(工作在数据链路层) CSMA/CD(带冲突检测的载 ...