zoukankan      html  css  js  c++  java
  • 隐式类型转换的一些总结

    布尔比较

    最近做项目遇到布尔比较的问题,总是掉坑,来总结一下

    来源于司徒正美大大的博客:http://www.cnblogs.com/rubylouvre/p/3990290.html

    这里先说说“==”引起的隐式类型转换,导致布尔结果的改变。

    规则 :

    . 如果存在NaN,一律返回false;

    . 再看看有木有布尔,有布尔就将布尔转换为数字。

    . 接着看有木有字符串:

    对方是对象,对象使用toString进行转化;
    
    对方是数字,字符串转数字。
    
    对方是字符串,直接比较,其他返回fasle。
    
    null,undefined不会进行类型转化,但是他们两个相等。
    
    0 == undefined;
    //false
    1 == true;
    //true
    2 == {valueOf: function(){return 2}}
    //true
    8 == undefined
    //false
    1 == undefined
    //false
    
    null == {toString: function(){return 2}};
    //false
    0 == null;
    //false
    null == 1;
    //false
    
    

    . 多个小语句组成的大语句布尔表达式

    规则:

    。 例子语句

    
    0&&0||1   //1
    
    

    总结:左值 && 右值:
    左值为真,执行并返回右值,否则返回左值

    左值 || 左值:
    左值为真,直接返回左值,否则返回右值。

    0 && 0 这是一个语句, ||1 又是一个语句。

    是返回了 这外语句的 值,比如 0&&0 返回 0,只代表执行完了这个语句,并且值为0,并不是 return 的概念。

  • 相关阅读:
    成员对象和封闭类
    静态成员
    this指针
    类型构造构造函数
    拷贝构造函数
    C++
    矩阵快速幂求递推式
    对浅拷贝和深拷贝的基本理解
    传引用作为形参和返回值_节省参数拷贝的时间
    namespace的基本知识
  • 原文地址:https://www.cnblogs.com/minb/p/6237728.html
Copyright © 2011-2022 走看看