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 的概念。

  • 相关阅读:
    java核心技术学习笔记之一程序设计环境
    java核心技术学习笔记之一程序设计概述
    Eclips入门教程
    strict aliasing
    GCC 内联汇编
    文件系统实现
    ucore lab2
    Vim 最强调试插件:vimspector
    X86保护机制
    ucore lab1
  • 原文地址:https://www.cnblogs.com/minb/p/6237728.html
Copyright © 2011-2022 走看看