【前端开发】ES6知识点系统化梳理笔记
>ES6扩展:
#Map和Set是es6标准新增的数据类型 ##Map是key-value(关键字-值),Map允许修改value,不允许修改key,Map支持下标操作
var m = new Map([['zhangsan',20],['lisi',25],['wangwu',19]]);
m.get('lisi') // ##Set是key(关键字),Set的迭代器是const,不允许修改元素值,Set不支持下标操作
var m = new Set([1,2,3,4,3,2]);
m // Set{1,2,3,4} #Symbol
typeof Symbol 代表独一无二的值;
避免键名重复被覆盖;
无法进行字符串拼接和数字的计算;
可以转布尔型; #find
发现数组中满足条件的第一个
var m = [10,20,30,60,26,50];
var n = m.find(function(item){
return item > 50
})
console.log(n) // 60 取数组中第一个满足条件的 #findIndex
发现数组中满足条件的第一个数的下标序号
var m = [10,20,30,60,26,50];
var n = m.findIndex(function(item){
return item > 50
})
console.log(n) // 3 取数组中第一个满足条件的位置下标 !! 转换为布尔值 #判断是否数组:
Array.isArray([]) #1、数组新增:
var arr = new Array(10,20,30) 可以多项也不可以一项,一项数据时返回代表的是长度10;
var arr = Array.of(20,10,30) 可以多项也可以一项;
#2、字符串新增;
2.1字符串中是否存在
ES5:
var str=“abcdefg”;
console.log( str.indexOf('c') !== -1) //true 若该indexOf检索的下标值不等于-1则证明存在;
ES6:
str.includes('c') //true 若存在为true否则false
str.startsWith('ab') //true 若是ab开头则true 否则false
str.endsWith('fg') //true 若是fg结尾则true 否则false
2.2字符串重复拷贝
console.log(str.repeat(3)) //abcdefgabcdefgabcdefg 重复拷贝
2.3超级字符串:
反引号包起来(换行生效和空格会生效)
反引号中间拼接变量${name}
var n = 2;
var m = 3;
console.log('n+m=${n+m}') 这里是反引号包裹
var isRaining = true
console.log('今天天气是${isRaining ? "雨天" : "晴天"}') 这里是反引号包裹 function fn (){
return "miaov"
}
console.log('fn执行结果是:${ fn() }') //函数也可以放反引号里执行
#3、对象新增:
3.1对象键名和键值相同可缩写:
var a=1;
var obj = {a};
console.log(obj) //a:1
3.2函数调用:
var obj = {
a,
fn(){
console.log("执行了")
},
b:100
};
obj.fn();
3.3键名动态改变:
var attrname = "width";
var obj={
[attrname]:100
}
console.log(obj) //键名随着attrname变化而变化
3.4函数名动态改变:
var attrFn = "fn";
var obj = {
[attrFn](){
console.log("attrFn执行了")
}
}
obj.fn();
3.5判断值是否完全相等
console.log(1 == "1") //true 隐式类型转换
console.log(NaN === NaN) //false es5的不足
console.log(Object.is(1,1)) //true es6 相当于 ===
console.log(Object.is(1,"1")) //false 即判断类型又判断值是否相等
console.log(Object.is(NaN,NaN)) //true 解决es5的不足之处
console.log(Object.is({},{})) //false {}为两个值
var obj={};
console.log(Object.is(obj,obj)) //true obj为一个对象
3.6 Object.assign()对象参数合并
function move(obj){
var defaultObj = {
ease : "linear",
duration:1000
}
<!-- var para = {
ease:obj.ease || defaultObj.ease,
duration:obj.duration || defaultObj.duratio
} -->
var para = {};
Object.assign(para,defaultObj,obj) //es6新属性 合并对象参数,后面依次合并到第一个参数,重复参数后面会覆盖前面的
console.log(para)
}
move({
ease:"easeIn",
duration:2000
})
3.7for of 对象遍历(Object.keys(obj))
var obj={
a:1,
b:2
}
console.log(Object.keys(obj)) // [a,b]
console.log(Object.values(obj)) //[1,2]
for(var attr of Object.values(obj)){
console.log(attr) //1 2
} console.log(Object.entries(obj)) //解构成二维数组
for(var [key,val] of Object.entries(obj)){
console.log(key,val) //分别取值 a 1 b 2
}
3.8 ES6扩展运算符
var a = {
a:1,
b:2
} var c = {
...a,
f:9999,
g:8888
}
console.log(c) //{a: 1, b: 2, f: 9999, g: 8888}
...obj 打散成参数的形式
var arr = [1,2,3,4];
console.log(arr) //[1,2,3,4]
console.log(...arr) //1 2 3 4
使用场景----数组取最大值
var arr = [1,23,4,5];
console.log(Math.max(1,23,4,5)) //23 参数形式是可以取到
console.log(Math.max(...arr)) //23 先用...扩展用算符转成参数形式即可
使用场景---数组去重
var aa = [1,2,3,2,4,5,2,3,1];
var bb = [...new Set(aa)] //先Set去重然后...运算符打散最后数组[]
console.log(bb) //[1,2,3,4,5]
#4、函数的扩展
##4.1 函数传递参数默认值设置
ES5写法:
function add(a,b){
var _b = b === undefined ? 100 : b ;
return a+_b
}
console.log(add(10,0)) ES6写法:
function add(a,b=100){
return a+b
}
console.log(add(10,0))
##4.2函数剩余参数
function fn(a,...r){
console.log(a,r) // 1 [2,3,4,5] ...r扩展运算符合并剩余参数为一个数组
console.log(r) // [2,3,4,5] }
fn(1,2,3,4,5)
##4.3箭头函数
var add = (a,b) => {
return a+b
}
add();
省略写法
var add = (a,b) => a+b //语句只有一句时省略{}和return
var add = (a,b) => ({miaov:3}) //{miaov:3} 想要返回对象需用()包起来
其他变体写法
var add = ()=>{
miaov:for(var i = 0; i<10;i++){
console.log(i)
if(i == 3){
break miaov;
}
}
}
add() 参数只有一个时,可省略()
var add = a => a*100
console.log(add(2)) // 筛选需要的数
var arr = [10,21,32,44,77];
var res = arr.filter(item=> item >21)
console.log(res) 箭头函数注意事项:
(1).内部this指向window,对于箭头函数修改this指向是没有用的(普通函数随着点击有可能是document,所以非箭头函数要注意this指向问题);
(2).箭头函数内部没有arguments,可用(...r)模拟使用;
(3).箭头函数不能通过new调用,无构造器;
#5、模块化开发
模块开发加type="module",且本地服务访问才生效
<script src="./data.js" type="module"> </script>
import {n} from "./data.js";
##模块化开发语法
第一种 导出变量和函数
var n = 100;
var m = 20;
function(x,y){
return x+y
}
export { n as newN,m,add}
html中使用
import {newN,m,add} from "./a.js"; 第二种 直接导出变量
exprot var n = 200;
import {n} from "./a.js"; 第三种 直接导出函数
exprot function fn(){
console.log(1)
};
import {fn} from "./a.js"; 第四种 默认导出
var n = 100;
var m = 20;
function(x,y){
return x+y
}
export default 1000; import d from "./a.js"; //全部导出
import * as tool from "./a.js"
用法
consoe.log(tool.m,tool.newN,tool.default) 只导入模块
console.log("a.js被加载")
import "./a.js" 模块化注意:
1、引入计算多次,模块只执行加载一次;
2、导出来的值是模块里的值的引用; #6、promise
##promise基础
1、异步编程解决方案;
##promise的基本使用
宏任务先执行,后微任务,最后定时器
var都是宏任务 .then(微任务)
var p = new Promise((resolve,reject)=>{
console.log("实例化...")
return resolve("成功!");
// reject("失败了")
console.log("shibai")
})
p.then((data)=>{
console.log("then",data)
}).catch((data)=>{
console.log(data)
})
使用方法:
Promise.all 全部执行完才返回
Promise.race 返回最先执行完的 #7、其他扩展总结: 之前嵌套的代码可用fn(a,b,c).then(()=>fn(a,b,c)).then(()=>fn(a,b,c))的形式比价简洁易维护了 选择器选取元素
document.getElementById 动态获取元素 会随着元素变化而变化
document.querySelector 静态获取元素 不会随着元素变化而变化 数字加undefined 结果为 NaN 字符串+undefined 结果是拼接起来ssundefined var fn = function(a,b,c){
console.log(arguments) //参数集合
}
fn(1,2,3) document.onclick = fn; //点击html页面即可触发
【前端开发】ES6知识点系统化梳理笔记的更多相关文章
- 1+x 证书 Web 前端开发 MySQL 知识点梳理
官方QQ群 1+x 证书 Web 前端开发 MySQL 知识点梳理 http://blog.zh66.club/index.php/archives/199/
- 前端开发面试知识点大纲--摘自jackyWHJ
前端开发面试知识点大纲:HTML&CSS: 对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应 Ja ...
- 《编写高质量代码:Web 前端开发修炼之道》 笔记与读后感
编写高质量代码:Web 前端开发修炼之道/曹刘阳著. —北京:机械工业出版社,2010.5 第一版 涉及到的知识点: 1. CSS Sprites 在国内很多人叫css精灵,是一种网页图片应用处理方式 ...
- 《编写高质量代码-Web前端开发修改之道》笔记--第二章 团队合作
本章内容: 揭秘前端开发工程师 欲精一行,必先通十行 增加代码的可读性--注释 提高重用性--公共组件和私有组件的维护 冗余和精简的矛盾--选择集中还是选择分散 磨刀不误砍柴工--前期的构思很重要 制 ...
- 《编写高质量代码-Web前端开发修改之道》笔记--第一章 从网站重构说起
本章内容: 糟糕的页面实现,头疼的维护工作 Web标准--结构.样式和行为的分离 前端的现状 打造高品质的前端代码,提高代码的可维护性--精简.重用.有序 糟糕的页面实现,头疼的维护工作 工作中最大的 ...
- 前端读者 | ES6知识点概述
本文来自 @羯瑞 整理 ES6,并不是一个新鲜的东西,ES7.ES8已经赶脚了.但是,东西不在于新,而在于总结. 变量的新定义 let 和 const 在ES6没有被普及时,我们会用的变量定义的方法是 ...
- 『编写高质量代码Web前端开发修炼手册』读书笔记--高质量的CSS
1.怪异模式和DTD 标准模式:浏览器根据规范表现页面 怪异模式:模拟老浏览器行为防止老站点无法工作(为了兼容老式浏览器的代码),如果漏写DTD(Document Type Definition文档定 ...
- Web前端开发--JS技术大梳理
什么是JS JavaScript是一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语 ...
- 读《编写高质量代码-Web前端开发修炼之道》笔记
第一章 1.Web标准由一系列标准组合而成,核心理念是将网页的结构,样式和行为分离,所以分为三大部分:结构标准,样式标准和行为标准.结构标准包括XML标准,XHTML标准,HTML标准:样式标准指CS ...
随机推荐
- QThread: Destroyed while thread is still running
Qt5已经分装了函数 void QThread::requestInterruption() { Q_D(QThread); QMutexLocker locker(&d->mutex) ...
- Navigator的使用:
1.路由直接跳转到下一个页面: Navigator.pushNamed(context,"/login"); 2.跳转的下一个页面,替换当前的页面: Navigator.of(co ...
- 【计算机视觉】OpenCV篇(5) - 仿射变换与透视变换
参考: 图像处理的仿射变换与透视变换(https://www.imooc.com/article/27535) http://ex2tron.wang/opencv-python-extra-warp ...
- vfp
DROP 从目前资料库中移出资料表格,并从磁碟上将它删除.DELETE 标示要删除的记录.只是标记,没有删除.ZAP 从资料表格中移除所有记录,仅保留资料表格结构.PACK 从目前资料库中移除标示为删 ...
- 正则表达式\s空格,\d数字,量词+*?测试
之前的博文中: 有正则表达式的\b.i.\g,本文再测试了空格数字和量词的匹配.这篇只测试匹配,不替换或其他处理.\s空格:测试实际写空格也能识别,但是不利于看出空了几个空格,可以用\s代表空格.\d ...
- Linux查看CPU和内存使用情况总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- Charles 手机抓包HTTPS设置以及证书安装
本文参考:charles 抓包手机 charles经常会进行手机上的网页抓包,比如去copy别人网站图片或脚本的时候o(∩_∩)o : 手机抓包的原理,和PC类似,手机依靠charles与服务端进行对 ...
- IDEA将Git本地仓库Push至远程仓库
转自:https://blog.csdn.net/qq_15653601/article/details/79870996 本地本地仓库项目: 配置Git自动识别本机Git配置
- 第07组 Alpha冲刺(3/4)
队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:完成人员分配,初步学习Android开发 Github签入记录 接下来的计划:继续完成Android开发的学习,带领团队进行前后端开 ...
- transform-transition-animation(1)
网布就是我们的屏幕,x轴沿屏幕平行的水平方向,y轴沿屏幕平行的垂直方向,z轴沿与屏幕垂直方向. rotateX(angle), rotateY(angle), rotateZ(angle), rota ...