Node.getAttribute的运算符评估不一致

时间:2017-04-25 21:13:54

标签: javascript operators

我似乎偶然发现了看似虚假的等价物, 使用以下命令生成维基百科主页(wikipedia.org)的所有输入列表:

var inputs = Array.prototype.slice.call(document.getElementsByTagName("input"));

获取所有输入的列表,但是,具有<input#searchInput>属性的type=search节点似乎评估得非常奇怪。

inputs[2].getAttribute('type') === ("text" || "search")评估为false

inputs[2].getAttribute('type') === ("search" || "text")评估为true

有人能解释一下这个逻辑吗?

1 个答案:

答案 0 :(得分:1)

术语(字符串||字符串)似乎评估为第一个非空值,或者如果两者都为空则为null,这是有意义的。

"text"结果为inputs[2].getAttribute('type') === "text"。在该逻辑中,它评估括号中的比较,然后执行:false,即inputs[2].getAttribute('type') === (null || "search")

要证明这一点,请尝试以下代码,该代码应返回true:

Map <String, Class<?>> properties