【发布时间】:2020-09-28 12:00:23
【问题描述】:
我正在尝试基于配置负载编写灵活的查询逻辑,例如:
{
"test": "( fieldA == fieldB == fieldC )"
}
当我的应用用文本数据替换“fieldA”、“fieldB”和“fieldC”值时,结果始终为 false。 这显然与我混淆了 javascript 运行比较的方式有关(它必须与数据类型和数学排序有关),但谁能用一个简单的字母数字值示例来解释这一点?
例如'John Smith' == 'John Smith' == 'John Smith' 总是错误的;
【问题讨论】:
-
开始比较布尔值和字符串(甚至是数字)是很奇怪的。这个逻辑的目标是什么?
-
因为
true == 1,但是true != 'John Smith' -
根本没有可比性,
"( fieldA == fieldB == fieldC )"永远是"( fieldA == fieldB == fieldC )"... -
在任何语言中必须重写为
fieldA == fieldB && fieldA == fieldC && fieldB == fieldC -
这是因为操作的顺序,所以
('A' == 'A')是true所以如果你做了'A' == 'A' == true你会得到真实的,但('A' == 'A') == 'A'不是真实的,因为最后一个'A'是不等于true...
标签: javascript string-comparison