箭头函数和普通函数的区别
let fun = () =>{
console.log("lalalala');
}
function fun(){
console.log("lalalala");
}
箭头函数相当于匿名函数,并且简化了函数的定义:
用let 定义一个变量fun=()
有两种格式:一个只是表示表达式;另一种是有表达式的。
箭头函数是匿名函数,不能作为构造函数,不能使用new
let funconstructor=() =>{
console.log("111");
}
匿名函数: 没有实际名字的函数。
单独运行一个匿名函数会报错的,解决的办法就是:在匿名函数的最外面加上一个括号。
但是这样是不会执行的,如果需要执行匿名函数,在匿名函数后面加上一个括号就可以立即执行。
(function (){
//此时会输出张培跃
console.log("张培跃");
})()
如果需要传值,直接将参数写道括号里面就ok了;
( function(str){
console.log("培根“+str);
})("好帅”)
匿名函数的实际应用: 1,事件;2,对象;3,函数表达式,4,回调函数,5,返回之
匿名函数的作用:
1,通过匿名函数可以实现闭包
2,模拟块级作用域,减少全局变量。
3,执行完匿名函数,存储在内存中相对应的变量会被销毁,从而节省内存。再者,
箭头函数不绑定arguments 取而代之的是用rest参数解决。
rest参数就是: ..b
// arguments变量的写法
function num1() {
return Array.prototype.slice.call(arguments).sort();
}
// rest参数的写法
const num2= (...numbers) => numbers.sort();
注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
箭头函数不绑定this ,会捕获其在上下文的this值,作为自己的this值。
箭头函数通过call()或者apply()方法调用一个函数,只传入一个参数,对this并没有
箭头函数没有原型属性。
箭头函数不能当做generator 函数,不能使用yield关键字。
- 箭头函数的this 永远指向其上下文,this,任何方法都改变不了其指向,如call()
- 普通函数的this 指向调用它的那个对象。
什么是 Generator 函数
在Javascript中,一个函数一旦开始执行,就会运行到最后或遇到return时结束,运行期间不会有其它代码能够打断它,也不能从外部再传入值到函数体内
yield
和yield*
都是js中的关键字,他们不能直接使用;只能配合Generator进行使用;Generator是一种函数,声明方式和普通函数类似,只不过要在function后面加个*(function*
)