0

我读了一本电子书并找到了这个命令,但我不知道它的用途以及何时使用它。例子:

var x = (12, 34, 56)

在这种情况下,x 是一个数字,它的值为 56。谢谢。

这是我从电子书 'Javascript for absolute Beginners' 中读到的完整脚本:

var fridge = {
buttermilk: [1/3, "cup"],
kefir: [1 + 1/2, "cup"],
yogurt: [4, "cup"],
};
var dough = {
hardWhiteWholeWheatFlour: [2, "cup"],
sugar: [1/3, "cup"],
madagascarVanilla: [1, "tsp"],
orangeZest: [1, "tbs"],
soda: [1, "tsp"],
tartar: [1, "tsp"],
orangeJuice: [1/2, "cup"],
culturedMilk: [1/2, "cup"],
egg: [1],
cranberries: [2/3, "cup"]
};
dough.culturedMilk[0] = fridge.buttermilk[0] >= 1/2 ? (fridge.buttermilk[0] -= 1/2, 1/2) :
fridge.kefir[0] >= 9/16 ? (fridge.kefir[0] -= 9/16, 9/16) :
fridge.yogurt[0] >= 10/16 ? (fridge.yogurt[0] -= 10/16, 10/16) :
alert("No cranberry bread for you!");
dough.culturedMilk;
// [0.5625, "cup"]
fridge.kefir;
// [0.9375, "cup"]
4

3 回答 3

1

如果条件冰箱.酪乳[0] >= 1/2

满足了,那么就发生了两件事。freezer.buttermilk[0] 减少 1/2,dough.culturedMilk[0] 等于 1/2

尝试这个...

     a = 10
     b = a < 20 ? (a -= 3, 2) : (a += 3, 5)

并查看 a 和 b 的值

于 2012-06-06T09:55:04.053 回答
1

看来您已经知道这意味着什么……评估每个操作数并返回最后一个操作数的结果。

在 的情况下(fridge.buttermilk[0] -= 1/2, 1/2),表达式本身是条件运算符的一部分:

fridge.buttermilk[0] >= 1/2 ? (fridge.buttermilk[0] -= 1/2, 1/2) : ...

在这种情况下,逗号运算符用于引入副作用。如果fridge.buttermilk[0] >= 1/2为真,1/2则应分配给dough.culturedMilk[0]。但同时,fridge.buttermilk[0]也应该更新。

通常你会使用两个表达式语句,比如

if(fridge.buttermilk[0] >= 1/2) {
    fridge.buttermilk[0] -= 1/2;
    dough.culturedMilk[0] = 1/2;
}

但是由于作者要使用条件运算符,因此可以使用逗号运算符在一个表达式中执行两个表达式。它更新fridge.buttermilk[0]并返回的值1/2

我不建议这样做,尤其是在这种情况下,使用嵌套的条件运算符,传统的if-else语句会更容易阅读。

于 2012-06-06T09:55:50.427 回答
0

例如这一行:

(fridge.kefir[0] -= 9/16, 9/16)

正如您在评论中看到的那样,克菲尔-s 的值将减少 9/16、3/2 - 9/16 = 0,9375,并返回 9/16 作为culturedMilk 的值。

(param1, param2 ...) 计算表达式并返回最后一个。(就像你的例子一样)

于 2012-06-06T09:58:46.320 回答