奇怪的结果javascript比较
strange results javascript comparison
我有一个javascript入门级问题。当执行以下命令时,结果是
假
真正的
有些数相等
编号,编号
numbernumbernumber
- 为什么前两个值不同? 为什么第一个是错的?
JS:
function sort3(a, b, c)
{
document.getElementById("output").innerHTML =
(typeof a) + (typeof b) + (typeof c);
if(a > b > c) { return [a, b, c];
else if(a > c > b) return [a, c, b];
else if(c > a > b) return [c, a, b];
else if(c > b > a) return [c, b, a];
else if(b > c > a) return [b, c, a];
else if(b > a > c) return [b, a, c];
else return "Some numbers are equal";
}
HTML: <p id="ex1"></p>
<p id="output"></p>
<script type="text/javascript">
var m = parseFloat(1);
var k = parseFloat(2);
var l = parseFloat(3);
var q = typeof m;
var w = typeof k;
var e = typeof l;
var res1 = (l>k>m) + "</br>";
res1 += (m<k<l) + "</br>";
var res2 = sort3(m,k,l) + "</br>";
var res3 = (typeof m) + ", " + (typeof Number(m))
document.getElementById("ex1").innerHTML = res1 + res2 + res3;
</script>
要在JavaScript(或从语法上派生自B的任何其他语言)中进行复合比较,您不需要做以下操作:
(l>k>m) // <=== Wrong
相反,如果您想知道l
是否大于k
并且k
大于m
,您可以使用&&
(逻辑"and"运算符),如下所示:
(l>k && k>m)
细节:
你原来的表达式(l>k>m)
分解成这样:
((l>k)>m)
这意味着你将得到这些:
(true>m)
// or
(false>m)
当将布尔值与数字进行比较时,布尔值被强制转换为数字,因此效果为:
(1>m)
// or
(0>m)
相关文章:
- 使用javascript比较对象中的对象值和数组长度
- 字符串为零的JavaScript比较运算符
- 如何使用 JavaScript 比较字符串变量
- 替换函数后的Javascript比较字符串不起作用
- 点串的Javascript比较
- Javascript比较两个日期以获得差异
- Javascript 比较时间不起作用
- Javascript - 比较字符串环境
- Javascript 比较 == 空替代方案
- 数组值和字符串之间的 JavaScript 比较
- 在 JavaScript 比较后打开 LED
- javascript:比较不同时区的日期
- Javascript 比较时间戳
- Javascript 比较一个数组中的项目
- 使用 JavaScript 比较 2 个数组并创建一个新的对象数组,该数组不包含与 id 字段匹配的对象
- JavaScript 比较运算符中的不一致
- 什么是 Telerik 网格的 IsContainedIn FilterOperator 的 Javascript 比较
- JavaScript - 比较日期
- Javascript 比较两个大小不同的数组,并返回不在第二个数组中的项目
- JavaScript 比较 NUMBER.MIN_VALUE 到 0.0 返回 false