函数内在定义函数这样就形成了一个闭包环境,内部函数可以访问外部函数作用域的变量,如果外部函数不暴露这个内部函数,外界就不知道这个内部函数的存在,只能在自己内部使用
//计算数字的平方 function sum(a,b){ function sque(x){ //计算平方 return x*x; } return sque(a)+sque(b) } console.log(sum(2,3))
函数内部调用函数就叫闭包
如果把内部函数返回出去,就变成了一个高阶函数
一个函数返回另一个函数叫做高阶函数
function pre(){ let name='菜菜'; function getName(){ return name; } return getName; } let fn=pre(); console.log(fn());
加小括号号是调用,所以不加小括号,让他把函数返回出去进行调用
这个是返回一个只读属性,不可修改
执行机制解读:函数加小括号是执行函数,当前的fn指向的是pre函数,由于pre加了小括号,所以他是执行了一次把返回的getName函数赋值给的fn,所以fn就等于指向了未执行getName函数,log(fn)是log出来的getName函数,fn()是执行的getName函数,getName是pre的私有函数