18、匿名函数

  • 匿名函数如果设置了函数名,在外面是无法调用的,但是在函数里面可以调用执行
  • 并且这个名字相当于一个常量,这个名字存储的值不能修改(非严格模式下不会报错,但是不会有任何的效果,严格模式下直接报错。可以理解为const创建的常量 )
let fn = unction AAA(){
  console.log(AAA)    //当前函数
}
var b = 10;
(function b(){
  b = 20
  console.log(b)    //function b;b此时相当于一个常量,不能被改变
})()
console.log(10)        //10
var b = 10;
(function(){        //去掉匿名函数的名称b之后,里面的b就变成全局的了
  b = 20
  console.log(b)    //20
})()
console.log(10)        //20

现在要让上面的匿名函数中的b的值log变成20,并且全局b仍然是10,怎样实现?

  • 将b变成私有变量,声明它或者改为形参
//方法一:改为形参
var b = 10;
(function b(b){    //形式参数
  b = 20
  console.log(b)    //20
})()
console.log(10)        //10 

//方法二:声明它
var b = 10;
(function b(){    
  let b = 20    //或者使用var声明也可以
  console.log(b)    //20
})()
console.log(10)        //10

results matching ""

    No results matching ""