Javascript IIFE:立即调用函数表达式执行。它是如何运行的?

Javascript IIFE:立即调用函数表达式执行。它是如何运行的?,javascript,Javascript,我想了解JS中的生活是如何运作的 我首先运行的是: (function boo() { var i = 90; console.log(i); })(); 并在下面添加 boo(); 不跑 问题1:为什么?这个名为iLife的文件是否未存储以供以后调用 当我这么做的时候 var tee = function boo() { var i = 90; console.log(i); }; tee(); boo(); var tee = funct

我想了解JS中的生活是如何运作的

我首先运行的是:

(function boo() {
      var i = 90;
      console.log(i);
    })();
并在下面添加

boo();
不跑

问题1:为什么?这个名为iLife的文件是否未存储以供以后调用

当我这么做的时候

 var tee = function boo() {
  var i = 90;
  console.log(i);
};

tee();

boo();
 var tee = function boo() {
  var i = 90;
  console.log(i);
};

boo();

tee();
它运行

但当我这么做的时候

 var tee = function boo() {
  var i = 90;
  console.log(i);
};

tee();

boo();
 var tee = function boo() {
  var i = 90;
  console.log(i);
};

boo();

tee();
它不跑了

问题2:为什么

问题1:为什么?这个名为iLife的文件是否未存储以供以后调用

基本上是的。函数表达式的名称在封闭范围内不会成为符号。如果你有

var foo = function bar() {
  // `bar` is defined here, `foo === bar`
};
// only `foo` is defined here
然后您只能访问
foo
<代码>条形图仅可在功能中访问(并指功能本身)。有关更多信息,请参阅

问题2


这与生活无关。它们实际上都坏了

在第二个示例中看不到输出的原因是,在调用
tee
(确实存在)之前,您试图访问
boo
(不存在)


JavaScript在抛出错误时停止执行代码,因此永远不会调用
tee

这与IIFE无关。它们实际上都坏了<代码>boo未在这些示例中定义。“看控制台!”费利克斯克林刚做了一个手势edit@user2290820:您的第二个代码段(用于Q1)仍然抛出异常,只有在成功运行
tee()
后才会抛出异常。因此,它不会运行,因为存在错误。我明白了。在chrome控制台上运行时,跟踪这种运行时错误很困难。我不理解您的第一个响应。函数。exp.name不能调用您的意思是为了重用?