{}=>箭头函数 和 function(){}的 区别
一、写法不同
function fn ( a, b) {
return a + b;
}
var foo = ( a, b) => { return a + b } ; 将返回值用一个变量接收起来
二、this 指向
使用function定义的函数,this的指向随着调用环境的变化而变化,
而箭头函数中的this指向是固定不变的,一直指向定义函数的环境。
function foo ( ) {
console. log ( this ) ;
}
var obj = { aa: foo } ;
foo ( ) ;
obj. aa ( )
var foo = ( ) => { console. log ( this ) } ;
var obj = { aa: foo } ;
foo ( ) ;
obj. aa ( ) ;
三、构造函数
function是可以定义构造函数的,而箭头函数是不行的。
function Person ( name, age) {
this . name = name;
this . age = age;
}
var lenhart = new Person ( lenhart, 25 ) ;
console. log ( lenhart) ;
var Person = ( name, age) => {
this . name = name;
this . age = age;
} ;
var lenhart = new Person ( 'lenhart' , 25 ) ;
四、变量提升
由于js的内存机制,function的级别最高,而用箭头函数定义函数的时候,需要var(let const定义的时候更不必说)关键词,
而var所定义的变量不能得到变量提升,故箭头函数一定要定义于调用之前!(先定义后调用)
foo ( ) ;
function foo ( ) {
console. log ( '123' ) ;
}
arrowFn ( ) ;
var arrowFn = ( ) => {
console. log ( '456' ) ;
} ;