问答详情
源自:2-8 较量较量(比较操作符)

这段代码最终结果是true,false,true,哪位大佬帮我解释一下怎么出来的


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script>

var d= 3>(1>2);
document.write(d);
document.write("<br>");
var e= 3<(6>2);
document.write(e);
document.write("<br>");
var f="张飞"<"李白";
document.write(f);

</script>
<body>
</body>
</html>

提问者:七77777 2019-03-12 14:39

个回答

  • 不爱学习的阿妞
    2020-06-16 17:28:06

    汉字比较是通过unicode比较的,可以测试“张”和“李”的unicode编码分别为多少,var z="张".charCodeAt();var l = "李".charCodeAt(); 可以得出z=24352,l=26446,z(24352)<(26446),所以张<李,已经得出结果,所以“飞”和“白”不用再进行比较。则得出最终结果“张飞”<“李白”。

  • 阳火锅
    2019-03-12 15:46:38

    来来来,已老夫30多年写代码的经验来告诉你这个小白。

    首先你要搞清楚真与假这个概率,首先true是真,false是假。。同时真也代表1,假就代表0。(回顾一下课程就明白)

    第一个 var d = 3>(1>2) 这其实就是一道小学生都会做的运算,有括号的我们就先算括号里面的嘛,括号里面你看一下1>2是真还是假? 肯定是假对不对,同时我刚才也说了假是不是就是等于0,所以再拿3>0,所以这样你输出来是不是就是真,也就是true

    第二个跟第一个同理

    第三个,这里面对比的就是编码值了,因为是中文。每个汉字其实在计算机里面都有个编码值:打个比方‘爱’这个字的编码值是2000,‘我’这个字的编码值是1500.。那'爱'>'我'比较那肯定就是true。。(具体每个汉字对应的编码值可以上百度搜索)

    如果听懂了,希望采纳。谢谢


  • 7QQ
    2019-03-12 15:35:01

    在js做比较的时候,有这样的三条规则:

    1.如果比较的两者中有bool,会把 bool 先转换为对应的 number,即 0 和 1

    2.如果比较的双方中有一方为number一方为string,会把string转换为数字

    3.把string直接转换为bool的时候,空字符串‘'转换为 false,除此外的一切字符串转换为 true


  • hhhole
    2019-03-12 15:27:49

    似乎true是1,false是0。