js逗号操作符

最近看了些其他人分享的面试经历

发现了这么一道题


var result = (function(){

    return 1;

},function(){

    return "2"

})()

console.log(typeof result)

突然就陷入了沉思,这好像触及到了我的知识盲区...

一开始以为这就是一整个即时匿名函数,仔细看看好像事情没那么简单,这么解释语法不对啊...

后来觉得应该这么看


var result = (function(){return 1;},function(){return "2"}) //前面的括号是一个整体

()

console.log(typeof result)

(xxx, xxx) 想必是这个逗号有什么作用

逗号操作符MDN

原来逗号也是个操作符!

当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for 循环中提供多个参数。


for (var i = 0, j = 9; i <= 9; i++, j--)

  document.writeln("a[" + i + "][" + j + "] = " + a[i][j]);

这段代码使用逗号操作符一次递增/递减两个变量,但是var语句中的逗号 不是 逗号操作符。

另一个使用逗号操作符的例子是在返回值前处理一些操作。

总结

逗号在js中是可以一个操作符

expr1, expr2, expr3...

它会返回最后一个表达式的结果,其他的表达式只会进行求值

所以文章开头的代码第一部分返回最后一个函数的定义,再执行后result的值为"2",所以输出的答案就是"string"!

你可能感兴趣的:(js逗号操作符)