繁体   English   中英

javascript技巧。 为什么(a,b,c)=> 5

[英]javascript tricks. Why (a,b,c) => 5

var a,b,c = function() { return 5; };

变量a和b是未定义的,c是函数,为什么当我们这样做时(a,b,c)()我们有5?

因为(a,b,c)评估为c

请参阅逗号运算符。 在C,C ++中以相同的方式工作。

声明与以下内容相同:

var a;
var b;
var c = function() { return 5; };

或几乎相同:

var a;
var b;
function c() { return 5; };

使用(a,b,c)与声明无关,它只返回最后一个操作数,因此(a,b,c)()c()完全相同(只要评估a和b不相同)没有任何副作用)。

我最近遇到了类似的谜题:

var f = function(a,b,c){
    return a, b, {x:a+b, y:a+c}
}

并且f(1,2,3)的结果是{x:3, y:4} ,所以我认为表达式(a,b,c)总是求值为c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM