函数声明和函数表达式的区别:
函数声明如果先执行后定义,不会报错,照常运行。但是表达式如果先执行再定义,就会报错,因为变量提升,打印出来会是undefined。
// 函数声明
function fn () {
}
// 函数表达式
var fn = function () {
}
this要在执行时才能确认,定义时无法确认。
var a = {
name:'A',
fn: function () {
console.log(this.name)
}
}
a.fn() // this === a
a.fn.call({name:'B'}) //this === {name:}
var fn1 = a.fn
fn1() // this === window
网友评论