Javascript - 需要对 IIFE 中的变量进行解释

Javascript - need explanation on the variable inside IIFE

我有这段代码 - 我只是想知道为什么在我将 'var' 添加到 foo 变量后,它不起作用(它显示 foo 未定义)...任何人都可以帮助解释这两个函数吗?谢谢!

window.onload = function() {
    var test = foo().steps(2);
    console.log(test);
}

(function() {
  //if I remove var, then it prints out a function which is what I expected
  var foo = function() {
    var steps = 1;
    function callMe(g) {
      //do something else
      console.log("hello" + g);
    }
    callMe.steps = function(x) {
      //if no arguments then return the default value
      if (!arguments.length) return steps;
      console.log(arguments);
      //otherwise assign the new value and attached the value to callMe
      steps = x;
      return callMe;
    }
    return callMe;
  }
})();

var 添加到 foo 使 foo 成为 IIFE 内部的局部变量,因此您无法在外部访问它。