JavaScript---es6语法---学习笔记
es6 语法:
文章目录
- es6 语法:
- 编译、转换
- 1.在线转换
- 2.提前编译
- 3.主要内容
- 1.变量
- 2.函数
- 3.数组
- 4.字符串
- 5.面向对象
- 6.Promise
- 7.generator
- 8.模块化
- 9.剩余参数(可变参数 )
- 10.拓展运算符 [...element]
- 11 对象字面量的拓展
兼容性 ie10+ chrome firefox 移动端 NodeJS
编译、转换
1.在线转换
2.提前编译
babel == browser.js
ES6
3.主要内容
1.变量
var 作用域是函数
1.可以重复声明
2.无法限制修改
3.没有块级作用域 {}
let 不能重复声明 变量 有块级作用域
const 不能重复声明 常量 不可修改 有块级作用域
let 声明的变量可以重新赋值,const不可以,所以const声明的不是变量是常量
for循环是使用let声明下标变量
2.函数
回调函数的理解:,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。
把回调函数传入库函数的动作,称为登记回调函数(to register a callback function)
回调函数通常和应用处于同一抽象层(因为传入什么样的回调函数是在应用级别决定的)
回调就成了一个高层调用底层,底层再回过头来调用高层的过程。
//作者:no.body链接:https://www.zhihu.com/question/19801131/answer/27459821 看到大佬的文章讲解回调函数,讲的还不错
好处:1.简明的语法、2.隐式返回、3.不绑定this
简明语法:
箭头函数 ()=>{}
如果只用一个参数()可省略,只用一个return,{}省略,就像Lambda表达式
多个参数需要使用括号,并且参数间使用逗号间隔
隐式返回:
简单返回时,可以不写return 如: (x,y) => x + y;
命名函数在递归和解除事件绑定时非常有用,但是箭头函数时匿名函数,需要递归和解除事件绑定时需要复制个一个变量或常量,多数是常量。
this:
一般来说在对象中的方法中直接引用this值是当前对象,如果使用在对象中的method(function)中引用函数(如:回调函数那样的独立函数),函数中的this值是window ,因为在js当中this值在运行时才被绑定的,**可以在方法中定义一个变量指向当前对象或者使用箭头函数(因为箭头函数没有自己的this值,是继承父类的,也就是在定义时解释时就已经被绑定了,不会随着函数的调用而改变)
函数参数的默认值:
a = a || 5;旧写法
ES6写法 defaultarg(a = 2,b = 3)如果第二参数使用默认值则defaultarg(3),此时3是a的传值;若第一个 参数使用默认值则defaultarg(undefined,5),此时5是b的传值,注意一点,非最后一个参数使用默认值都需要传入undefined不能传入null,传入null不会引用默认值
箭头函数不能用于构造函数,不可以用在对象添加原型的方法当中。
不使用箭头函数的情况:
1.想沿用之前的默认绑定的时候定对象。如原型方法
2.使用更多地绑定的时候,如绑定交互事件时,this绑定更多地元素。
3.想要在函数中使用arguments对象。
3.数组
数组解构
变量值交换
let a = 10;
let b = 5;
[a,b] = [b,a]
console.lof(a)
console.lof(b)
数组遍历
传统for循环
forEach(arr => {})方法,但是不能中途终止循环
for(let index in arrs) 这种遍历会把一些额外属性也遍历出来,还有在原型函数也会打印出来
为了解决第三种方法的小问题,ES6 给出了for 0f loof 就是将方式三的in改为for,还可以中途终止循环或跳出本次循环。
for of 可以用在数组中,用在字符串(遍历字符串),用在list当中
Array.from() 将一些类数组特性的数据结构转换成数组
Array.of() 弥补new Array()返回必须指定大小的不足,也就可变长。
find(element,index,array)方法
findIndex()
some()当至少有一个元素满足条件时,返回true,然后终止执行后续操作
every() 所有元素都满足条件时,才返回true否则返回false
concact()将两个数组拼接成一个新的数组
4.字符串
1.模板字符串:
``使用反引号来包括字符和变量,变量可以使用${var_name},例子如下:
<script>const template=`<div><p>${var_name}</p></div>`.trim()</script>
模板字符串是可以嵌套的,复杂的模板字符串还可以抽离出来,写成一个function()在进行嵌套。
2.标签模板字符串
3.字符串的方法
.startsWith()是否以指定的字符或字符串开头
.endsWith()是否以指定的字符或字符串结尾
.includes() 是否包含特殊的字符或字符串
.repeat() 重复次数
5.面向对象
1.对象解构
读取对象属性值更加方便。
const Tomson = {name:'Tomson'age:'25'famliy:{mother:'mom',father:'dad',brother:'bro'}//使用这种方式声明变量,需要在大括号中添加括号括起来,否则会把变量//当作局部变量。//let name//({name,age}) = Tomsonconst {name,age } = Tomson//只有当变量为undefined而非默认值(null,0,'')时才会使用参数默认值const {father:f,mothter,brother,sister = "sis"} = Tomson.family
}
6.Promise
定义:Promise 是一个对象,它代表了一个异步操作的最终完成或者失败。因为大多数人仅仅是使用已创建的 Promise 实例对象
本质:本质上,Promise 是一个被某些函数传出的对象,我们附加回调函数(callback)使用它,而不是将回调函数传入那些函数内部。
所谓
Promise
,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 引用了阮一峰的ECMAScript 6 入门里面的话promise对象特点
对象状态不受外界影响
一旦状态改变,就不会在变
缺点:
首先,无法取消
Promise
,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise
内部抛出的错误,不会反应到外部。第三,当处于pending
状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
约定:
不同于“老式”的传入回调,在使用 Promise 时,会有以下约定:
- 在 本轮 Javascript event loop(事件循环)运行完成 之前,回调函数是不会被调用的。
- 通过
then()
添加的回调函数总会被调用,即便它是在异步操作完成之后才被添加的函数。 - 通过多次调用
then()
,可以添加多个回调函数,它们会按照插入顺序一个接一个独立执行。
因此,Promise 最直接的好处就是链式调用(chaining)。
基本用法
const promise = new Promise(function(resolve, reject) {// ... some codeif (/* 异步操作成功 */){resolve(value);} else {reject(error);} });//第一个参数时成功时调用的函数,第二个是失败时调用的函数,往外面传递错误消息,第二个参数可选 promise.then(function(value) {// success }, function(error) {// failure });
Promise
实例生成以后,可以用then
方法分别指定resolved
状态和rejected
状态的回调函数。
7.generator
8.模块化
9.剩余参数(可变参数 )
function funName(…numbers)
function funName(arg1,…dealargs)
还可以在数组的元素中使用剩余参数 const[name,id,…ss] = [name,id,s1,s2,s3,s4]
10.拓展运算符 […element]
将一个可遍历对象(字符串,数组,arraylist,部署了iterator接口的数据结构)扩展为一个新的参数序列
11 对象字面量的拓展
如果变量名和对象的属性名一致,对象里不需写成 name:name,直接写name即可
对函数也进行了简化,只要写成 function_name(){}即可
JavaScript---es6语法---学习笔记相关推荐
- 7 种 Javascript 常用设计模式学习笔记
7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! JavaScript 权威指南-学习笔记 ...
- JavaScript高级程序设计学习笔记(三)
分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- MySQL语法学习笔记
MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...
- Verilog HDL 语法学习笔记
今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...
- VHDL语法学习笔记:一文掌握VHDL语法
今天给大侠带来FPGA 之 VHDL 语法学习笔记,话不多说,上货. VHDL语法学习笔记 一.VHDL简介 1.1 VHDL 的历史 VHDL 的 英 文 全 名 是 Very-High-Speed ...
- javascript基本语法学习(二)
一.JavaScript函数 1.1.函数的基本概念 在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用. 虽然for循环语句也能实现一些简单的重复操作,但是比较具 ...
- web阶段概念语法----学习笔记
web学习笔记大纲 一.Oracle数据库 1.概念 2.sql命令(增删改查) 1)select命令 2)insert命令 3)update命令 4)delete命令 3.函数--- oracle提 ...
- javascript高程3 学习笔记(二)
ECMAScript function的理解 ECMAScript 函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型 比如函数的形参有两个,但是调用函数传入的参数可以写一个,三个或 ...
最新文章
- C# 消息处理学习总结
- Linux网络编程 | 多路复用I/O :select、poll、epoll、水平触发与边缘触发、惊群问题
- cpu影响matlab仿真速度吗,Proteus仿真速度很慢的分析
- hadoop ubantu环境搭建_Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)
- Abp vnext Web应用程序开发教程 7 —— 作者:数据库集成
- java二维数组模拟用户登录_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)...
- 利用切片操作,实现一个trim()函数,去除字符串首尾的空格
- paa 计算机语言,Paa Robertingeri
- 【poj1995】快速幂
- sip系统完整性是什么?SIP系统完整性保护关闭方法(含M1)
- DOTA版设计模式——责任链
- 使用WebDeployment Project改善VS2005发布网站
- 【Spark】SparkSQL练习--出租车数据清洗
- Centos 关闭密码字典检查
- 软件工程需求分析方法
- 弹性法计算方法的mck法_弹性的计算方法
- linux下好用的chm阅读器
- 共同好友(java)
- jQuery.filer文件上传插件简单使用
- 谷歌找邮箱插件,外贸人必备
热门文章
- 【观察】亚马逊云科技:探索Serverless创新的“无人区”
- 单绞机张力开环控制(绞臂行星差速机构算法)
- Android9.0 MTK8666平台摄像头数据分析
- VPP代码阅读中文注解--dlist.h
- 达内java ppt下载,达内教程.ppt
- Java Calendar 类的使用(日期处理二)
- 数学小课堂:数学和自然科学本质的差别(微积分中的极限和生活中的极限)
- 改变终端窗口字体大小的快捷键
- prometheus监控ssl证书过期(使用插件blackbox_exporter)
- 在Linux中创建文件目录软链接、硬链接的方法