函数是什么

JS的所有函数都有返回值,所以只有函数没有过程。
function fn(){
console.log(1)
}
const a = fn() // undefined
var obj = {
fn : fn ; // 方法
}
函数的返回值是由什么确定
- 调用使得输入参数:params
- 定义是的环境 env

x
是参数,a是环境 ,,,,执行结果为 x2

结果为 x2
闭包
如果在函数里面访问外面的变量,那么 “这个函数+这些变量 = 闭包”
-
闭包的特点
- 能让一个函数维持住一个变量
- 但并不能维持这个变量的值
- 尤其是变量的值会变化的时候
-
对象是穷人的闭包
- 对象也可以来维持住一个变量
-
如果你们语言不支持闭包,也可以用对象代理
image.png
- 闭包是穷人的对象
- 如果一门语言不支持对象,可以用闭包代理

- 在函数里面能访问外面的变量是天经地义的嘛??
并不是!!!
假如Ruby


网友评论