非匿名立即执行函数

var b = 10;
(function b(){
    // 'use strict'
    b = 20
    console.log(b)
})() 
  • 非匿名立即执行函数,函数名不可以修改,严格模式下会TypeError
  • 非严格模式下,不报错,修改也没有用。
  • 查找变量b时,立即执行函数会有内部作用域,会先去查找是否有b变量的声明,有的话,直接赋值
  • 确实发现具名函数function b(){} 所以就拿来做b的值
  • IIFE函数内部无法进行赋值(类似于const),应该是非匿名立即执行函数无法进行重新赋值
 var b = 10;
(function b(){
    var b = 20
    console.log(window.b) 
    console.log(b)
})()
var b = 10;
(function b(){
    console.log(b)
    b = 5
    console.log(window.b)
    var b = 20
    console.log(b)
})()
posted @ 2020-07-22 16:11  671_MrSix  阅读(282)  评论(0编辑  收藏  举报