IIFE总是返回undefined吗?

C g*_*ics 1 javascript

在下面的代码中,为什么变量foo的内容未定义?我期待我们的IIFE声明回归一些东西!

var foo = (function (){
    var a=8;
    console.log("hi");
})();
Run Code Online (Sandbox Code Playgroud)

Tra*_*s J 6

您正在调用的表达式内部的函数未返回任何值,因此这foo是未定义的原因.如果它返回一个值,那么foo将包含该值.

var foo = (function(){
    var a = 8;
    console.log("hello");
    return "world";
})()
console.log(foo);//world
Run Code Online (Sandbox Code Playgroud)