自调用函数中的未知参数

Unknown argument in self invoke function

本文关键字:未知 参数 调用 函数      更新时间:2023-09-26

我发现了以下自调用函数语法:

var data = (0, foo)();
function foo(){
   return "a";
}

但我不明白这里 0((的含义是什么。谁能向我解释一下。提前谢谢。

在我的观点中,这是对逗号运算符的毫无意义的使用。

@techfoobar正确地指出:

"逗号分隔的语句列表"只返回列表中最后一项返回的内容。例如,x = (2, 3, "Hi")会将值"Hi"设置为 x

function foo(){
   return "a";
}
// The following all return 'a'
console.log(('hello', foo)());
console.log((null, foo)());
console.log((true, foo)());
console.log((undefined, foo)());
console.log((0, foo)());
console.log((1, foo)());
console.log(({}, foo)());

0 是完全可选的,此语法的作用是,它评估每个成员并返回最后一个成员。

在本例中,您有:(0, foo(它将 eval 0 到 0,eval foo 到一个函数,返回它并使用最后一个 (( 调用它

您可以简单地致电

(foo)()

或者您可以为其创建一些步骤

这将发出警报,然后调用 foo

function a () {
    alert(1)
}
(a(), foo)()

这将简单地提醒并返回 foo 作为函数,以便您稍后调用它

var f = (a(), foo)
f()

它可能对我不知道的条件范围或变量有非常具体的用途

在我看来,使用逗号运算符调用函数可能是一种编程习惯。它为我们在进行函数调用时提供了深入思考的空间。

(foo)();(0,foo)(); 等函数调用的结果是相同的。但是后一种方式会让你思考在 foo 被调用之前还能做什么。您可以将 0 替换为 doSomething() 你应该做什么。