ES6新增内容总结
ES6新增内容有:1,模块化思想。2,关于变量let和const。3,解构赋值。4,字符串的扩展。5,函数的扩展。6,箭头函数。7,继承apply的用法
以下就是详解:
1:模块化思想
非模块化有命名的冲突,文件依赖的缺点,而模块化思想解决了这样的问题,一个文件即一个模块模块的导出,通过exports 和module.exports。
export:
在一个模块文件里可以有多个export用于暴露模块的接口,但只能有一个export default用于暴露模块的默认接口,例如:
export const myStr = 'hello world'
export const myNum = 1000
export const myBoole = false
export default {
id: 1,
title: 'this is title',
}
import:
引入模块的时候通过export暴露的接口需要用{}包起来,通过export暴露的接口则不用,例如:
// 引入默认输出对象
import defaultObj from './test.js'
// 引入多个输出变量
import {myStr, myNum, myBoole} from './test.js'
// 同时引入默认输出对象和多个输出变量
import defaultObj {myStr, myNum, myBoole} from './test.js'
var module=require('filePath');
模块文件的后缀: .js .json .node
加载优先级(不写后缀的情况下).js->.json->.node
2.关于变量let和const总结
let声明的变量不存在预解析,在块级作用域内不允许重复声明,在块级作用域外不可访问let和const声明的变量。const是用来声明常亮,不允许重新赋值,声明时必须初始化
3.解构赋值
/*变量的结构赋值*/
//数组的结构赋值
let [a,b,c,d]=[1,2,3,5];
console.log(a,b,c,d);
/*对象的结构赋值*/
/*let {name,age}={name:'小明',age:20};
console.log(name,age);*/
// 对象属性别名
let {name:firstName,age}={name:'小明',age:20};
console.log(firstName,age);
let {sin,cos}=Math;
console.log(typeof sin);
console.log(typeof cos);
/*字符串的结构赋值*/
let[h,g,j]='jefiwi';
console.log(h,g,j);
4.字符串的扩展
includes()//判断字符串是否包含字符串,第一个参数要判断的字符串,第二个参数从索引为多少开始。举个简单的例子
var arr = "abcdefghi";
console.log(arr.includes("j"))
//false
console.log(arr.includes("d"))
//true
console.log(arr.includes("d",5))
//false
console.log(arr.includes("d",3))
//true
第二个参数可以不写,默认为0
还有就是模板字符串
假如说现在有一个列表,列表内容是循环得出的,这个时候我们就要在循环内部写结构标签
var arr = ['11','22','33'];
var str = "";
for(var i = 0;i<arr.length;i++){
str +=`
<li>${arr[i]}</li>
`
};
console.log(str)
/*
*<li>11</li>
*<li>22</li>
*<li>33</li>
*/
这时,我们就可以把 str,放在我们想要的地方了
5.函数的扩展
1.默认值. 2.参数解构赋值,3.rest参数 4 ... 扩展符.
//默认值
function print(a=10,b=2,c=1){
let result=a+b+c;
console.log(result);
}
print();
//解构赋值
function foo({name='小明',age=18}={}){
console.log(name,age);
}
foo();
foo({name:'小红',age:20});
//rest参数
function restParam(a,b,...param){
console.log(a);
console.log(b);
console.log(param);
}
restParam(1,2,3,56,6,9,45,12);
1
2
[ 3, 56, 6, 9, 45, 12 ]
//...扩展符 在函数调用时将数组转换为单个参数。
function restParam(a,b,c,d,e){
console.log(a+b+c+d+e);
}
let arr=[20,30,45,56,30]
restParam(...arr);
//合并数组
let arr1=[12,5];
let arr2=[45,89];
let arr3=[...arr1,...arr2]
6.箭头函数
let foo=(a,b)=>{
console.log(a+b)
};
foo(10,20)
//以上写法就相当于
function foo(a,b){
return console.log(a+b)
};
foo(10,20)
箭头函数注意事项
1.this取决于函数的定义,而不是调用。
2.箭头函数不用new关键字
3.箭头函数不可以使用arguments获得参数列表,可以使用rest参数代替 7.apply
语法 | 定义 | 说明 |
---|---|---|
call(thisObj,Object) | 调用一个对象的一个方法,以另一个对象替换当前对象。 | call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj |
apply(thisObj,[argArray]) | 应用某一对象的一个方法,用另一个对象替换当前对象。 | 如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数 |
ES6新增内容总结的更多相关文章
- es6新增功能
声明命令 1. let命令 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效.下面代码在代码块之中,分别用let和var声明了两个变量.然 ...
- ES6新增的 Set 和 WeakSet 是什么玩意?在此揭晓
现在的章节内容会更加的紧密,如果大家看不懂可以先去看以前的文章,当然看了的忘了,也可以去看一下,这样学习后面的内容才会更加容易. 什么是Set结构 Set是ES6给开发者带来的一种新的数据结构,你可以 ...
- 面向对象编程-终结篇 es6新增语法
各位,各位,终于把js完成了一个段落了,这次的章节一过我还没确定下面要学的内容可能是vue也可能是前后端交互,但无论是哪个都挺兴奋的,因为面临着终于可以做点看得过去的大点的案例项目了,先憋住激动地情绪 ...
- AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码
AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...
- ES6核心内容精讲--快速实践ES6(一)
前言 本文大量参考了阮一峰老师的开源教程ECMAScript6入门,适合新手入门或者对ES6常用知识点进行全面回顾,目标是以较少的篇幅涵盖ES6及部分ES7在实践中的绝大多数使用场景.更全面.更深入的 ...
- es6新增
首先要说let,他是只在代码块中执行的变量,例如: { let a = 10; var b = 1;}console.log(a);//definedconsole.log(b);//1 ...
- ECMAScript简介以及es6新增语法
ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的 ...
- ES6新增的常用数组方法(forEach,map,filter,every,some)
ES6新增的常用数组方法 let arr = [1, 2, 3, 2, 1]; 一 forEach => 遍历数组 arr.forEach((v, i) => { console.log( ...
- ES6新增对象方法的访问描述符:get(只读)、set(只写)
Es6新增对象方法的访问描述符:get(只读).set(只写),可以直接使用,一般用于数据监听,用途类似于vue.$watch. var obj = { a:1, get bar() { return ...
随机推荐
- ActiveMQ的作用总结(应用场景及优势)以及springboot+activeMq 实战
业务场景说明: 消息队列在大型电子商务类网站,如京东.淘宝.去哪儿等网站有着深入的应用, 队列的主要作用是消除高并发访问高峰,加快网站的响应速度. 在不使用消息队列的情况下,用户的请求数据直接写入 ...
- ART模式
ART模式是Android RunTime的简称,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率.省电.占用更低的系统内存.手机运行流畅.但凡 ...
- JavaScript中字符串,数组的基本操作
JavaScript的字符串就是用”或”“括起来的字符表示. js中操作字符串: 1.获得字符串的长度 var s = 'Hello, world!'; s.length; // 132.获取指定字符 ...
- C语言中函数strcpy ,strncpy ,strlcpy的用法
strcpy ,strncpy ,strlcpy的用法 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. s ...
- vue3.x版本安装vue-cli建项目
vue-cli版本在3以上 全局安装vue-cli npm install -g @vue/cli 建立项目工程,假设项目建在e:\vueProject\vue-cli3.0+目录下: 先进入此目录: ...
- jack反序列化自定义字段绑定,报错:can only instantiate non-static inner class by using default, no-argument constructor
package com.xxx; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lo ...
- 10 Best Practices for Better RESTful API
转自 http://www.cnblogs.com/mondol/p/6109024.html
- 刀塔OMG塔防1.23单机版使用方法
使用方法1.确保魔兽的版本为1.26(低版本会报错),如果版本不对用附件中的版本转换器转一下2.把 omg.w3x 复制到 魔兽的MAPS文件夹 WarcraftIII 游戏根目录\Maps3.双击运 ...
- ASP.NET Core 入门笔记8,ASP.NET Core MVC 分部视图入门
一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Raz ...
- 【机器学习】ICA 原理以及相关概率论,信息论知识简介
看完了sparse coding,开始看ICA模型,本来ng的教程上面就只有一个简短的介绍,怎奈自己有强迫症,爱钻牛角尖,于是乎就搜索了一些ICA的介绍文章(都是从百度文库中搜来的),看完之后感觉这个 ...