如何使0在JavaScript中不计算为false?
以下代码中的如何使0在JavaScript中不计算为false?,javascript,Javascript,以下代码中的this.startOffset和this.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.startOffset
和this.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
我在this.startOffset
中使用-1
,因为这是字符开头的值。(例如,0,1
将选择节点中的第一个字符。)
但是,由于this.node.childNodes.item(0).length-1在第一个字符中将变为0,因此它将返回false
,而不是0
,并且代码将到达this.node.childNodes.item(0).firstChild.length-1
,从而导致错误
如何使0
不返回false,而是将设置为this.startOffset
设置为0
?如果关注文本节点,请尝试使用子节点
this.startOffset = this.children.length ||
this.children.item(0).children.length;
这将跳过文本节点,并根据是否存在子节点及其子节点返回布尔值。您可以使用三元运算符以值形式返回所需的任何值
this.startOffset = (condition) ? 1 : 0;
仅从条件中删除-1
不是更干净吗?这应该help@gurvinder372你的意思是把它放在其他地方吗?因为代码过于复杂,如果结构正确,问题一开始就没有必要了。“如何使0不返回false,而是将this.startOffset设置为0?“第一个代码块中显示的代码仅将startOffset
设置为数字,而不是false
,前提是这些length
属性都是数字。它将是第一个不是0
,或0
的数字(如果它们都是)。