我找到了这段Javacript代码,但我无法理解在if条件中包含一个三元运算符意味着什么。
var s = 10, r = 0, c = 1, h = 1, o = 1;
if (s > r ? (c = 5, h = 2) : h = 1, o >= h)
{
alert(1);
}
在"if“条件下,o >= h
是否返回要计算的结果?在"if“条件下逗号的用法又如何呢?
发布于 2015-12-24 01:01:57
这实际上只是一个语法上的捷径。我们可以将其扩展为两个if
语句:
var condition;
if (s > r) {
c = 5;
condition = (h = 2); // another short-cut; it's essentially (h = 2, condition = true)
}
else {
h = 1;
condition = (o >= h);
}
if (condition) {
alert(1);
}
使用comma
允许将两条语句转换为一条语句(因为a, b
的计算结果始终为b
,尽管a
和b
子表达式都在进程中计算)。
发布于 2015-12-24 01:04:19
此代码不会给出错误,当你运行...基本上..。它所做的是运行三元运算,其中它找到(c=5,h=2),这不是写入if语句的条件。
因此,条件不会满足,也不会警示(1);
https://stackoverflow.com/questions/34440410
复制相似问题