javascript 函数(ES6)
严格模式
在js第一行写上'use strict' 将开启严格模式
在严格模式下,声明变量时不允许不加var;
多行字符串
一个字符串如果想要换行,之前只能使用
alert("这是\r\n一个\r\n多行\r\n字符串");
ES6现在新增了一个新的方法
alert(`这是
一个
多行
字符串`);
使用这种方法可以直接输出换行符
类似于c#里面的@
Slice
它就是js版本的substriing
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C']
arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
Slice方法包含首,但是不包含尾
push 和 pop
在数组最后追加/删除一个
unshift 和 shift
在数组头部追加/删除一个
Map
map是一组key-value的组合。可以极快的查找
// 初始化一个map
var m = new Map([['xyy','yebao'],['lz','xiubao'],['hali','habao']]);
// 添加一个新的key-value组合
m.set('santong','alex');
// 删除一个key-value
m.delete('santong');
// 根据key获取
m.get('xyy');
// 判断是否存在
m.has('xyy');
Set
Set和map类似,是一组key的组合。
但是只保存key,不保存value。
同时key不会重复
// 虽然声明了很多重复的,但是实际上 s = [1,2,3,4,5]
var s = new Set([1,1,1,1,2,2,3,3,4,4,4,5]);
alert(typeof s);
// 打印每个key
s.forEach(function(item){
alert(item);
});
iterable
和Map、Set一样,iterable也是ES6新引入的语法。
这是因为array可以使用下标来访问,而Map和Set则不行。
为了统一集合类型,ES6引入了新的类型----iterable。
Array,Map和Set均属于iterable类型。
具有iterable类型的集合可以使用新的for...of方法来遍历
var s = new Set([1,1,1,2,3,4,5,5,5,6,6,7]);
for(var t of s){
alert(t);
}
for...of 和in最大的区别有两点:
- 返回的不是属性名,而是每个元素
- 修复了for...in的历史遗留问题,只会返回集合本身的元素
当然除了使用for...of之外,更好的遍历集合的方法是使用forEach方法
// array 中forEach的回调函数参数
var arr = ['a','b','c'];
// 当前元素,当前序号,集合本身
arr.forEach(function(element,index,arr){
alert(element);
alert(index);
alert(arr);
});
// Set中的回调函数参数
var s = new Set([1,2,3]);
// 因为Set并没有索引,因此前两个参数都是当前元素,最后一个参数是集合本身
s.forEach(function(element,element2,s){
alert(element);
alert(element2);
alert(s);
});
// Map中的回调函数参数
var m = new Map([['lz','xiubao'],['xyy','yebao'],['hali','habao']]);
m.forEach(function(value,key,m){
alert(value);
alert(key);
alert(m);
});