认识函数
- 一个能实现特定功能的固定程序段,带有一个入口和一个出口。
- 它必须要先声明,才能调用,调用才是真正执行
- 函数执行到
return立即终止,导出结果,如果没有return,默认返回undefined
两种函数声明方式
- 方式一:函数声明
function say(name){...} - 方式二:函数表达式
const say = function(name) {...}
函数执行/调用
假设函数名为f,有三种方式执行 没有其他方式,即使是浏览器、Vue、React要执行f,也只有这三种方式
- f(x,y,z)
- f.call(神秘参数,x,y,z)
- f.apply(神秘参数,[x,y,z])
const f = function(){return '返回值'}
//赋值为函数名(存的是地址)
button.onclick = f
//等价于
button.onclick = #404
//函数调用(得到返回值,然后赋值)
button.onclick = f()
//等价于
button.onclick = '返回值'
箭头函数
const sum = function(a, b) {
return a + b
}
// 等价于
const sum = (a, b) => {
return a + b
}
//如果函数体只有return,可简化成
const sum = (a, b) => a + b
//如果参数只有一个,可把参数小括号去掉
const inc = n => ++n
//如果返回的值是对象,对象需要加小括号
const createPet = name => ({name: name})
const sum = a => b => a + b
console.log( sum(3)(4) )
//等价于
function sum(a) {
return function(b) {
return a + b
}
变量的作用域与闭包
-
在代码声明的时候就确定了
- 跟函数执行无关
- 词法作用域、静态作用域
-
就近原则
闭包: 如果一个函数访问了它外面的自由变量,那么这个函数加这些变量的总和 就叫闭包