BEE = 20;
STACKMENOW = 10;
TYPE = 1; // (1 = ADDITION, 0 = SUBSTRACTION)
NEWVALUE = BEE (TYPE? + : - ) =STACKMENOW;
console.log(NEWVALUE); // This should be 30 if the TYPE is 1, and 10 if the type is 0, is this possible?
请参阅jsfiddle:http://jsfiddle.net/3663w4ey/15/
原因我问这是因为我需要在我的游戏服务器上将玩家统计数据与巨大的属性列表同步,即如果用户正在装备该项目。将数学符号分配给类型变量以确定它是加法还是减法是很好的。这样我就不需要重写所有属性名称,然后使用' - ='速记。 (反之亦然)。如果那是有道理的。我很难解释事情,但我希望你明白这一点。
答案 0 :(得分:2)
您不能将任何代码拆分并将其传播到三元运算符上。
在我的浏览器控制台中运行代码会给我:
SyntaxError:意外的令牌':'
我不清楚你的目标是什么,但假设你想做
NEWVALUE = BEE += STACKMENOW;
或与-=
相同,您可以在+=
和BEE
之前+
或-
之前重写您的语句以使用STACKMENOW
},但在三元运算符内:
NEWVALUE = BEE += TYPE ? STACKMENOW : -STACKMENOW;
如果您不想两次写STACKMENOW
,也可以使用1
或-1
并将其与STACKMENOW
相乘(尽管我想象一下)可能会慢一点):
NEWVALUE = BEE += (TYPE ? 1 : -1) * STACKMENOW;