最近看了些其他人分享的面试经历
发现了这么一道题
1 | var result = (function(){ |
突然就陷入了沉思,这好像触及到了我的知识盲区…
一开始以为这就是一整个即时匿名函数,仔细看看好像事情没那么简单,这么解释语法不对啊…
后来觉得应该这么看
1 | var result = (function(){return 1;},function(){return "2"}) //前面的括号是一个整体 |
(xxx, xxx)
想必是这个逗号有什么作用
原来逗号也是个操作符!
当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for 循环中提供多个参数。
1 | for (var i = 0, j = 9; i <= 9; i++, j--) |
这段代码使用逗号操作符一次递增/递减两个变量,但是var
语句中的逗号 不是 逗号操作符。
另一个使用逗号操作符的例子是在返回值前处理一些操作。
总结
逗号在js中是可以一个操作符expr1
, expr2
, expr3...
它会返回最后一个表达式的结果,其他的表达式只会进行求值
所以文章开头的代码第一部分返回最后一个函数的定义,再执行后result
的值为"2"
,所以输出的答案就是"string"
!