zoukankan      html  css  js  c++  java
  • 相等运算符

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title></title>
     6     <script type="text/javascript">
     7     /*
     8     相等运算符用来比较两个值是否相等,相等为true否则为false
     9     使用==来做相等比较
    10     当使用==来比较两个值时,如果值的类型不同
    11     则会自动转换为相同类型
    12     */
    13    console.log(1=="1");//true
    14    console.log(true=="1");//true;
    15    console.log(null==0);//false
    16    /* undefined衍生自null,所以这两个值做相等判断时,会返回true 
    if(x==undefined)//x=undefined/null都成立 推不出x==undefined
    null/undefined和其他任何值都不会相等*/ 17 console.log(undefined==null);//true; 18 /* NaN不和任何值相等,包括他本身 */ 19 console.log(NaN==NaN);//false; 20 console.log(NaN==1);//false; 21 var b=NaN; 22 console.log(b==NaN);//false; 23 /* 可以通过isNaN()函数来判断一个值是否是NaN 24 如果该值是NaN返回true,否则返回false*/ 25 console.log(isNaN(b));//true; 26 27 /* 28 不相等 29 通过!=来判断 30 不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false 31 */ 32 console.log(1!="1");//false; 33 34 /* 35 全等=== 36 用来判断两个值是否全等,它和相等类似,不同的是它不会进行类型转换 37 如果两个值的类型不同直接返回false
    38 !==绝对不相等
    if(obj!==null&&typeof obj==="object"){//typeof null=="object"
    console.log('obj is an object');
    }
    39 */ 40 </script> 41 </head> 42 <body> 43 44 </body> 45 </html>
    /*
     * 把其他数据类型转换为数字(显式/隐式)
     *   + Number([value])
     *     + 字符串: 空字符串是零;只要字符中出现任意一个非有效数字字符,结果都是NaN;
     *     + 布尔: true->1  false->0
     *     + null->0
     *     + undefined->NaN
     *     + Symbol不能转换为数字
     *     + BigInt正常转换
     *     + 对象转换为数字遵循之前整理的三步规则
     * 
     *   + parseInt/parseFloat([value]) 
     *     + 首先要把[value]转换为字符串
     *     + 从字符串左侧第一个字符开始查找,把找到的有效数字字符最后转换为数字(遇到一个非有效数字字符,则结束查找)
     *     + 如果一个有效数字字符都没有找到,结果就是NaN
     * 
     * NaN===NaN:不相等(NaN和任何值都不相等)
     *   + typeof NaN ->'number'
     *   + isNaN
     *   + Object.is(NaN,NaN) ->true
     * 
     * “==” 相等,“===” 绝对相等
     *   + 区别就是两边数据类型不一样的时候,“==”会默认隐式转换为相同的数据类型,然后再进行比较,而“===”直接返回false,不会进行任何的隐式转换
     *  「n==m:n/m类型不一样」
     *      + null==undefined ->true  但是null/undefined和其他任何值都是不等的
     *      + null===undefined ->false
     *      + 对象==字符串  把对象转为字符串
     *      + 剩余的情况下,两边类型不一样,都要隐式转换为数字(基于Number)
     */
    // let res = Number('12px'); //NaN
    // if (res === 12) {
    //     alert(200);
    // } else if (res === NaN) {
    //     alert(NaN);
    // } else if (typeof res === 'number') {
    //     alert('number'); //输出
    // } else {
    //     alert('Invalid Number');
    // }
    
    console.log([] == false); //=>true
     // 都要转换为数字
    // //   []->0  false->0
     console.log(![] == false); //=>true
    // // 左边是一个JS表达式:![] 把空数组转换为布尔值后再取反 ->false
    // //   false==false

    Object.is()

    typeof [value]
    +返回结果都是一个“字符串”,字符串中包含对应的数据类型
    + "number" /"string"/"boolean" /"undefined" /"symbol" /"bigint"/"object" /" funct ion"
    +局限性(缺陷)
    + typeof null = :>"object"
    + typeof 对象/数组/正则/日期... =>"object" 基于typeof不能细分对象
    +检测原理
    +所有的数据类型值在计算机中,都是按照“=进制(0/1)"的值来进行存储的
    +对象数据类型的二进制值都是以000开头的(不论是普通对象还是数组正则对象都是如此)
    + null在计算中存储的二进制值: 000
    + typeof检测数据类型就是根据它的二进制值检测的,只要检测到是以000开始的,都认为是对象

    // 处理多件事情/复杂的事情,我们一般用小括号包起来,多件事情之间基于逗号分隔
    // 如果不想做任何的事情,拿null/undefined/void 0占位即可
    // 真实项目中不建议这样写,因为可读性很差
    a >= 0 && a <= 20 ? (a % 2 === 0 ? a += 2 : null) : a -= 2;
    console.log(a); */
    /*
     * 字符串拼接和数学运算
     *   值+字符串/对象:字符串拼接(有原始值的对象排除在外)
     *   {}+值:此处的{}被认为是代码块不参与运算,处理的只有 +值
     *   值+{}:参与运算了
     *   +值/++值/值++:数学运算  (‘10’++) -> 11
     * 
     * == VS ===:
     *   =:赋值
     * 
     *   ==相等比较:在比较的时候,如果两边的类型不一样,“浏览器会隐式的把它们转换为相同类型”,再做比较
     *     '10'==10 -> true
     *     规律1: null==undefined成立(但是null===undefined不成立),除此之外,null/undefined和其它值都不相等
     *     规律2: NaN和自己以及其它任何值都不相等
     *     规律3: 对象==字符串,把对象转换为字符串
     *     规律4: 剩下的情况,如果双等号两边数据类型不一致,最后都是转换为数字再进行比较的
     * 
     *   ===绝对相等比较:需要保证类型和值都相等,最后才相等  
     *     '10'===10 -> false
     * 
     * switch判断中的每一种case情况都是“===”进行比较的
     */
  • 相关阅读:
    java基础-数组
    泛型 --集合
    单例模式(新)
    static 关键字
    单例模式
    迭代器模式(java版)
    Object类
    JavaWeb学习总结(十七)——JSP中的九个内置对象
    javaweb学习总结(十六)——JSP指令
    javaweb学习总结(十五)——JSP基础语法
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/11217524.html
Copyright © 2011-2022 走看看