Javascript IIFE:立即调用函数表达式执行。它是如何运行的?
我想了解JS中的生活是如何运作的 我首先运行的是: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
(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不能调用您的意思是为了重用?