自调用函数:自己调用自己
自调用函数:(function(){函数})
自调用(自执行函数)的作用:主要用来分割作用域
eg:
function sum(n1,n2){
console.log(n1+n2);
}
sum(2,3);
思考题:具名函数可不可以自调用(可以调用)
表达式中的具名函数只识别为匿名函数,而忽略它的函数名
具名函数的四种调用方式:
1、()小括号运算符,平时常用的就是()运算符来调用执行一个函数
2、call
3、apply
4、new(不推荐使用这种方式)
总结:用new方式调用函数时,如果存在返回值,当返回值是Javascript的内置类型(基本类型)如String,Number,Boolean等时,将不会返回该值;当返回值是对象,函数,数组等对象类型时,将返回该对象,函数,数组
匿名函数表达式缺点:追踪栈中没函数名,调试困难;如果需要引用自身,只能用arguments.callee(ESS严格模式禁用);降低了函数可读性、可理解性
立即执行函数:也叫自执行函数,用法
第一种:(function(){函数体}());
第二种:(function(){函数体})();
两种用法完全等价
立即执行函数为什么能够自动执行?
因为这是函数声明,函数声明不可以执行的,
只有表达式才能够执行
总结
立即执行函数传递Window参数优化在作用域链查找Window速度,有利于压缩代码
具名函数表达式是一个最佳实践(外部无法修改,只有函数内部能够使用该函数名)
函数声明必须有名字
只有表达式才能够被执行
回调函数
回调函数在执行完毕后,根据不同的情况,可能调用不同的函数,我们可以调用这个函数
回调函数本质是一个参数