自调用函数中的未知参数

时间:2016-07-20 11:04:09

标签: javascript

我找到了以下自调用函数语法:

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

但是我没有得到0()的含义。任何人都可以向我解释。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

在我的opinoin中,这是对comma operator毫无意义的使用。

@techfoobar 正确地说明:

  

A"以逗号分隔的陈述清单"只返回列表中最后一项返回的内容。例如,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)());




答案 1 :(得分:1)

0是完全可选的,这个语法的作用是,它会篡改每个成员并返回最后一个成员。

在这种情况下你有:(0,foo) 它将eval 0到0,eval foo到一个函数,返回它并用last()调用它

您只需致电

即可
(foo)()

或者您可以创建一些步骤

这将提醒然后调用foo

function a () {
    alert(1)
}

(a(), foo)()

这将只是提醒并将foo作为函数返回,以便稍后调用

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

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

答案 2 :(得分:1)

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

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