【问题标题】:Javascript strange variable var x = (x, y == "z");Javascript 奇怪变量 var x = (x, y == "z");
【发布时间】:2015-12-17 22:27:36
【问题描述】:
var win=(win,feedback[i]["final"] =="win");

大家好,我正在使用一个名为“参与”的评估引擎,我关注 http://146.191.107.189/documentation/tutorial

但是你可以在上面看到一条线,我不知道它应该做什么。最好提一下 win 变量没有在代码的其他任何地方定义。

【问题讨论】:

  • win 是用var win 定义的,它被提升到范围的开头。除此之外,win 将成为等式的结果。但这种结构对我来说没有意义。
  • 我这里可能是错的,但似乎它只是成为feedback[i]["final"] =="win"的结果。
  • 所以如果 feedback[i]["final"] 等于 "win" 那么是真的吗?
  • 是的,它应该完全等于var win=(fedback[i]["final"] =="win");,所以我不知道为什么要这样写,也许代码是自动生成的。
  • @user3454070 这实际上只是取决于最后一项,it will be the last iteme as it's defined by the comma operator

标签: javascript scope var


【解决方案1】:

这是Javascriptscomma operator的效果。

逗号运算符计算其每个操作数(从左到右)并返回最后一个操作数的值。

所以win 的值是feedback[i]["final"] == "win",要么是true,要么是false。例如:

var x = (1,2,3); // x => 3

逐条声明是正在发生的事情:

var win = (                          // declared a variable named 'win'
    win,                             // the value of win is undefined (as it's declared by var)
    feedback[i]["final"] =="win"     // return this value, assign it to 'win'
);

在功能上它与以下内容相同:

var win = ( fedback[i]["final"] == "win" );

在这种情况下,就功能而言,var x = (x, y == z)var x = (y == z) 相比并没有真正的优势。做第一个操作就像做:

var x;
x;                          
x = (y == z);

【讨论】:

  • 但是根本没有真正的理由拥有win, 部分。或者是否存在win, 的存在很重要的情况?
  • @t.niese 不,真的没有任何理由拥有它,除非它在最后并且 win 在其他地方定义。否则最好使用应用某些操作的语句,例如var x = (i++,i++,i)
猜你喜欢
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2022-01-12
  • 2012-01-07
  • 1970-01-01
相关资源
最近更新 更多