ES6
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。
这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。
模板对象
新的语法 $ {NAME},并把它放在反引号里
遍历数组
var arr=['jack','rose','lucy','lolita'];
console.log('原始for循环:');
for(var i=0;i<arr.length;i++){
console.log(i+' '+arr[i]);
}
console.log('ESS[forEach]:');
arr.forEach(function(value,index){
console.log(index+' '+value);
})
console.log('for-in:');
for(var i in arr){
console.log(i+' '+arr[i]);
}
console.log('ES6[for-of]:');
for(var name of arr){
console.log(name);
}
var arr2=[56,88,100,'99',150,1818];
//过滤数组(filter)
arr2=arr2.filter(function(value,index){
return value>100;
})
console.log(arr2);
//遍历的同时修改
arr=arr.map(function(value,index){
return 'welcome:'+value+' '+index;
})
console.log(arr);
新的集合 ☆
Arry set map三者的区别?
小结:对比三种存储介质
Array: 有序集合,下标是唯一的,值是可以重复的
Set : 无序集合,没有下标,值就是唯一的
Map : 无序集合,采用键值对形式存储数据,键(key)是唯一的,值可以重复
set
map
var myset = new Set("ABCDEAB");//实际存储的值是:ABCDE,因为会自动过滤重复的值
console.log(myset.size);//Set集合的长度:0
myset.add("W");//给Set添加一个值
myset.delete("A");//从Set中删除A
myset.clear();//清空整个Set集合
console.info(myset.has("X")) // 检索Set中是否有X这个值
console.info(myset[2]) // Set不支持索引,所以这行会报错
Array.from(myset);//Set转数组
key-valuevar maps = new Map();
maps.set("username", "小三");//存储三组数据
maps.set("age", 20);
maps.set("sex", "男");
console.log(maps.get("username"));//通过Key取出
console.log(maps.size);//返回长度:3
console.log(maps.has("sex"));//是否有该key
console.log(maps.delete("age"));//根据key删除一个值
// console.log(map.clear());//清空
console.log(maps);//输出整个map集合
console.info(maps.keys());//返回Key的集合
console.info(maps.values());//返回Value的集合
面向对象的方法
Object.create():根据原型创建一个子类对象(继承的另一种形式)
ct.defineProperty(Obj,property,{}); 在一个对象上定义新的属性
Object.defineProperties(对象名,要添加的属性): 为对象一次定义多个属性
修饰器set和get
默认参数
拓展运算符 三个点(...)
将一根数组转换为用逗号分隔的参数列表
let 和 var ☆
的区别?
1.定义的变量作用域只是封闭块,而不是整个函数
2.var定义变量声明提前,也就是可以在创建前获取,但结果是undefined;
而let不存在声明提前,所以如果在创建前获取,会报错的
3.var定义的全局变量是属于window的,可以通过window取出来 (window点的出来);
而let定义的全局不属于window (window点不出来)
const常量 特点 通常全局 局部时等于let效果
1.常量不让后来修改
2.常量必须有初始值
3.如果将const定义的变量放在块级作用域中,则与let效果一样
解构 1.逗号隔开,用来批量赋值 (按顺序去赋值) 2.使用解构进行变量的交换 [a,b]=[b,a]
箭头函数 首先,我们发现省略了function,用()代替。
其次,{}被=>代替了。
最后,里面return没有了,因为它将暗地里返回单个语句的结果。如果你超过了一行,将需要明确使用return。
最重要的是,在ES6中的内层函数里,可以潇洒的使用this,它代表的就是外层函数的 ☆☆
this。因为箭头函数没有它自己的this值,箭头函数内的this值继承自外围作用域。
新增写法 String:
repeat();重复当前字符串多少次 重复多少次
console.log(“ABC".repeat(3));//ABCABCABC
includes();检测当前字符串是否包含某个字符串,包含返回true ☆ 检测是否包含
console.log(“ABC".includes("A"));//true
startsWith();检测某字符串是否在源字符串的头部,包含返回true ☆ 是不是以啥开头
console.log(“ABC".startsWith("B"));//false
endsWith();检测某字符串是否在源字符串的尾部,包含返回true ☆是不是以啥结尾
console.log("ABC".endsWith("C"));//true
Math:
Math.trunc();不进位的去除小数点
console.log(Math.trunc(3213.5));//3213
Math.sign();如果参数数字是正数,返回1;如果是负数,返回-1;如果是0,返回0
console.log(Math.sign(3213.5));//1
console.log(Math.sign(-3213.5));//-1
console.log(Math.sign(0));//0
☆用来判断当前数字的正负数
map和weakmap的区别? ☆
它两的结构类似也是用于键值对的集合
区别:weakmap只接受object对象作为键名(null)除外,方法只有set(),get(),has(),delete()
weakup没有遍历方法,size属性,clear方法