zoukankan      html  css  js  c++  java
  • js的类型转换

    javascript的原始类型(primitive type)

    有5种primitive type,分别是Undefined、Null、Boolean、Number 和 String。
    Null类型:      null类型也只有一个值,即null。undefined实际上是从null派生而来的,因此ECMAScript把他们定义为相等的。     
    alert(null == undefined); //output "true"
    alert(null === undefined); //output "false"
    ==时它会自动转化为null,所以返回true。不过如果用严格比较符===,不发生转化,将返回false。    
    尽管两个值相等,但是他们的含义却不一样,undefined是声明了变量但为对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数要返回的是对象,那么找不到该对象时,返回的通常是null。
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    js七种数据类型:Sting  Object  null  undefined  Array  Boolean  Number
    js五种基本类型:String Boolean Number null undefined
    typeof六种返回格式:'string'  'number'  'object'  'function'  'boolean'  'undefined'

    不像我们在学习JAVA时,被告知JAVA是完全OOP的语言:class是一类具有共同特点的物体的抽象,object是某个class下具体的一个实现,Object类是所有类的顶层父类,对Java的认知是从类与对象开始的;Javascript则不然,它是从类型(type)开始,在各类语言中遇到的number,string, boolean, object, function,array等都属于类型。

       这些类型在JS中分为两大类:原生类型与对象类型,原生类型包括:number,string, bool, null, undefined;剩下的非原生类型对象都属于对象类型,包括:object, array, function等,那这里的object专指具有属性(attribute)的对象,在Firebug中的代码示例如下:

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    转 boolean 规则:

    null, undefined, "", 0, -0, NaN 转换成布尔值是false, 剩下的全转化 true;

    转 number 规则:

    string  '2.3.1' => NaN;

    null, '', false, [] ==>> 0;

    undefined => NaN;

    object => x    Number(object.toString())

    隐式类型转换 ==

    1、有布尔值则转换为数值

    2、字符串数值,则字符串转换为数值

    3、只有一个是对象,则toString() valueOf()

    4、null == undefined

    5、NaN != NaN

    6、对象==,比较内存地址

    在逻辑运算表达式中,非布尔值会进行转换为布尔值。算上false一共有6个值(false,""(空字符串)、0和NAN、null、undefined)会转化为false.称这6个值为falsy值: 

    特别注意的是typeof('0')=='string',即'0'是一个字符串对象,对对象进行逻辑运算结果为true

    数据类型 转换为true的值 转换为false的值
    Boolean true false
    String  任何非空字符串 空字符串
    Number 任何非零数字值(包括无穷大) 0和Null
    Object 任何对象 null
    Undefined   Undefined



    console.log(([])?true:false); 
    console.log(([]==false?true:false)); 
    console.log(({}==false)?true:false
    得到的结果分别是什么?()//true true false

    第一个([])布尔转换成true.
    第二个,==相等比较时,允许类型转换。 其他类型值和布尔值==比较时,先将布尔值强制转换为对应数字,再进行比较。所以([]==false)-->([]==0)
    []和数字==比较时,将[]转数字0,因此([]==false)-->([]==0)--->(0==0)---->true
    第三个同上,{}==false--->{}==0-->NaN==0-->false
  • 相关阅读:
    超全的IE兼容性问题及解决方案
    排序算法之冒泡排序
    Java集合框架之图解(更新中...)
    ProgressBar与Handler的整合应用
    构建一个自己的springBoot启动器
    浅谈JVM(上)
    什么是JUC以及基本线程的知识
    Zookeeper 注册中心安装
    Spring Cloud 之 链路追踪Sleuth和Zipkin,RabbitMQ整合(十七)
    Spring Cloud 之 链路追踪Sleuth和Zipkin整合(十六)
  • 原文地址:https://www.cnblogs.com/aixiuxiu/p/6541826.html
Copyright © 2011-2022 走看看