我似乎偶然发现了看似虚假的等价物, 使用以下命令生成维基百科主页(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
。
有人能解释一下这个逻辑吗?
答案 0 :(得分:1)
术语(字符串||字符串)似乎评估为第一个非空值,或者如果两者都为空则为null,这是有意义的。
"text"
结果为inputs[2].getAttribute('type') === "text"
。在该逻辑中,它评估括号中的比较,然后执行:false
,即inputs[2].getAttribute('type') === (null || "search")
要证明这一点,请尝试以下代码,该代码应返回true:
Map <String, Class<?>> properties