函数默认参数设置
1 | function test(num = 1){} |
如果不传参数,那么num默认为1,相当于
1 | function test(num){ |
let、const
let 的出现是为了弥补原生js没有块作用域,只有函数作用域,我们为了不污染全局变量所以采用面向对象的编程方式;使用node也有这方面的原因。 比如上边例子中,let所在区域被称为死区,这一区域完全不受外部影响,所以我们可以把代码写成一块一块互不影响,不用害怕以前使用’var’要考虑作用域以及冲突; 但是使用过程中有几点值得注意,那就是如果重复声明会报错,在声明之前使用也会报错,因为它不存在变量提升
const是为了声明一个常量,不可改变,准确的说是不能改变它的指向的那个内存地址
Class
1 | class getData{ |
它的原理就是面向对象的编程模式;比如this.ajaxData等同于this.prototype.ajaxData;同样都是在它的原型链上边添加方法或属性;class里面的this一直指向例化它的对象; 但是如果是函数里边的另一个函数,这个时候this就不在指向实例化对象,比如上边的$.post;这个时候我们需要把’.bind(this)’写在$.post后边来改变指针。
constructor是将属性绑定在this上边;
如果一个函数前边写 static ,那么就是指明它是一个静态函数,一般来说都是把一些封装好的方法写成静态函数,比如一些运算或者数据处理等,静态函数只能由class本身调用
箭头函数
1 | let test=function(num){ |
数组去重
const set=new Set([1,1,2,3,3,4,5])
console.log([…set]) //1,2,3,4,5
属性:size
方法:add,delete,has1
2
3
4
#### async
相当于使用jQuery的这种写法
let requests = [];
requests.push($.getJSON(url));
requests.push($.getJSON(url1));
$.when().apply(this,requests).done(function(data){
console.log(data)
})1
2
3
4
5
6
7
8
9
10
11
async function test(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('呵呵哒');
})
})
}
返回一个promise对象,我们可以这样处理
test().then(v=>{
console.log(v);
})`