zoukankan      html  css  js  c++  java
  • 奇妙的输出,其实不奇妙

    首先,给出一个奇妙的输出。如下:

    alert(1<2<3)   // true
    
    alert(3>2>1)   // false
    

    啊哈,换了一个方向,怎么就输出不一样了?好奇妙的样子!

    其实认真分析一下,也就是正常的输出了,一点儿也不奇妙!

    首先,我们要知道在javascript中,undefined, null, 0, '', false,使用真值判断均为false。

    而JS的基本数据类型有Undefined,Null,Number,String,Boolean,对应着,每种数据类型都有相应的false的值。(意淫出来的,没查到文档)

    然后呢,就是JS中关系操作符(<,>,<=,>=)进行比较的时候,会对两边的值做一些转换,规则如下:

    如果两个操作数都是数值,则执行数值比较;
    如果两个操作数都是字符串,则比较两个字符串的对应字符编码的值;
    如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较;
    如果一个操作数是对象,则调用这个对象的valueOf()方法,用得到的结果按照前面的规则进行比较。如果对象没有valueOf()方法,则调用toString()方法,然后进行比较;
    如果操作数是一个布尔值,则将其转换为数值,然后进行比较。

    现在,我们分析上面那个奇妙不奇妙的输出:

    3 > 2 会输出 true

    然后 true 会转换成 1

    然后比较 1 > 1 ,输出false

    如果分析正确的话,那么:

    3>2>=1 将会输出为 true

    测试以下,完全正确。

    总结,有时候,看似不符合常理的东西,只要我们静下心来,认真思考,你会发现,这就是常理!

    世间万物也一样,存在即合理,发生及必然,境界到了,自然就到了!

  • 相关阅读:
    MySql基础教程(三)——查询训练
    MySql基础教程(二)
    MySql基础教程(一)
    解决Eclipse闪退问题的方法总结
    MySQL图形工具 MySQL GUI Tools的安装使用方法
    MySql5.6版修改用户登录密码
    Windows下MySQL解压版的配置
    js 数组容易弄混的那些方法
    如何使CSS--better(系列二)
    如何使CSS--better(系列一)
  • 原文地址:https://www.cnblogs.com/myqianlan/p/4201483.html
Copyright © 2011-2022 走看看