首页 > 解决方案 > JS 函数和 IIFE

问题描述

当我运行以下 JS 代码时:

var x = (function () {
    console.log('Hello x!');
});

var y = function () {
    console.log('Hello y!');
};

var z = (function () {
    console.log('Hello z!')
    return 2;
})();

x();

y();

以下输出打印在浏览器的控制台上:

你好z!

你好×!

你好!

为什么“ Hello z! ”打印在“ Hello x!”之前 &“你好! ”。立即调用函数表达式 (IIFE) 如何与“z”变量交互?

PS:我是初学者。

标签: javascriptiife

解决方案


因为这是 IIFE:

var z = (function () {
    console.log('Hello z!')
    return 2;
})();

如果没有 IIFE,上面的代码可以重写为:

var x = (function () {
    console.log('Hello x!');
});

var y = function () {
    console.log('Hello y!');
};

var z = function () {
    console.log('Hello z!')
    return 2;
};
z();

x();

y();

这就是为什么首先打印“Hello z”的原因


推荐阅读