Javascript bootstrap.js工具提示插件中使用的奇怪语法,以及计算工具提示位置 placement=placement='bottom'&&pos.top+pos.height+actualHeight-docScroll>parentHeight顶部': 位置==“顶部”和&pos.top-docScroll-actualHeight

Javascript bootstrap.js工具提示插件中使用的奇怪语法,以及计算工具提示位置 placement=placement='bottom'&&pos.top+pos.height+actualHeight-docScroll>parentHeight顶部': 位置==“顶部”和&pos.top-docScroll-actualHeight,javascript,twitter-bootstrap,Javascript,Twitter Bootstrap,这是bootstrap.js工具提示插件中的代码。整体可以找到 为什么每行结尾都是“:”而不是“?”? 你能帮我解释一下语法吗?我也不懂算术。如果你知道计算工具提示是否应该出现在元素的左、右、顶部或底部的技巧,请帮助我理解它。谢谢大家! JavaScript具有条件运算符?:(也称为三元运算符)。你可以阅读它的描述。一般语法是 状况?expr1:expr2 它计算条件,如果条件为true,则执行expr1;如果条件为false,则执行expr2。整个表达式的值是计算expr1或expr2的值 在

这是bootstrap.js工具提示插件中的代码。整体可以找到

为什么每行结尾都是“:”而不是“?”?
你能帮我解释一下语法吗?我也不懂算术。如果你知道计算工具提示是否应该出现在元素的左、右、顶部或底部的技巧,请帮助我理解它。谢谢大家!

JavaScript具有条件运算符
?:
(也称为三元运算符)。你可以阅读它的描述。一般语法是

状况?expr1:expr2

它计算条件,如果条件为
true
,则执行expr1;如果条件为
false
,则执行expr2。整个表达式的值是计算expr1或expr2的值

在您发布的代码中,有几个条件运算符的嵌套用法。下面是两级嵌套:

placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :
            placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :
            placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :
            placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :
            placement
由于优先规则的原因,对其进行评估时,会将其视为:

a ? x : b ? y : z
为清楚起见,通常不使用括号,并引入换行符和空白,以便每个条件运算符的各个部分都垂直对齐。例如:

a ? x : (b ? y : z)
这种情况可以持续任意多个条件。

这是一个(实际上是一个链)

是英语的简写

a = b ? c : d
运算符优先级规则允许您编写

if (b) {
  a = c
} else {
  a = d
}
而不是N
if
/
else if
语句,而不使用任何附加括号


像往常一样,您可以更好地理解自己在做什么,因为这个操作符在其他语言中的工作方式不同,尤其是在PHP中。

这是一个
三元操作符
,请谷歌感谢您的帮助,特德。我懂一个?x:b,但是把他们放在一起可能会有挑战。
if (b) {
  a = c
} else {
  a = d
}
variable = condition1 ? value1 :
           condition2 ? value2 :          
              .  .  .
           conditionN ? valueN :
           defaultValue