一.定义函数的两种方式
1.函数声明
//函数声明
function fn(x) {
console.log(x)
}
上述abs()函数的定义如下:
- function指出这是一个函数定义;
- abs是函数的名称;
- (x)括号内列出函数的参数,多个参数以,分隔;
- { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。
2.表达式
//表达式
var fn = function (x) {
console.log(x)
}
两种方式大体相同,除了变量提升。
二.函数的调用方式
1.直接调用 fn()
2.通过对象调用 obj.fn()
3.通过new关键字调用 new Fn();
4.fn.call/apply(obj) 临时让fn成为obj的方法进行调用
var obj = {}
function fn() {
this.name = 'lili'
}
fn.call(obj)
console.log(obj.name) //lili
//总结:js的强大之处:可以让一个函数,成为任意对象的一个方法。
三.回调函数
1.回调函数的特点
(1)自己定义的(2)自己没有调用(3)函数却执行了
2.常见的回调函数
(1)事件回调函数(2)定时器内的回调函数 (3)ajax请求回调函数 (4)生命周期回调函数
//1、事件回调函数
document.onclick = function() {
alert(1)
}
//2、定时器内的回调函数
setTimeout(function() {
alert('晚了')
}, 2000)
三.立即执行函数(IIFE)-- 也叫做:函数自调用
1.立即执行函数的特点
(1)没有函数名(2)没有调用函数 (3)该函数却执行了
2.立即执行函数的作用
(1)隐藏内部实现(2)不污染外部(全局)命名空间(3)用这种方式来编码js模块
;(function() {
console.log(1)
})()