如何让0在JavaScript中不评估为false?

时间:2016-05-02 10:24:29

标签: javascript

以下代码中的

this.startOffsetthis.endOffset是我用于在节点中选择单个字符的值:

this.startOffset = this.node.length - 1 ||
  this.node.firstChild.length - 1 ||
  this.node.childNodes.item(0).length - 1 ||
  this.node.childNodes.item(0).firstChild.length - 1

this.endOffset = this.node.length ||
  this.node.firstChild.length ||
  this.node.childNodes.item(0).firstChild.length

我在-1中使用this.startOffset,因为这是字符开头的值。 (例如0,1将选择节点中的第一个字符。)

但是,由于this.node.childNodes.item(0).length - 1在第一个字符中变为0,因此它将返回false而不是0,代码将达到this.node.childNodes.item(0).firstChild.length - 1,从而导致错误。< / p>

我如何才能使0不返回false,而是将this.startOffset设置为0

2 个答案:

答案 0 :(得分:1)

如果关注文本节点,请尝试使用子节点

this.startOffset = this.children.length ||
  this.children.item(0).children.length;

这将跳过文本节点并根据子节点及其子节点是否存在返回布尔值。

答案 1 :(得分:1)

您可以使用三元运算符返回任何您想要的值

this.startOffset = (condition) ? 1 : 0;