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
  • 相关阅读:
    HTML5的audio在手机网页上无法自动加载/播放音乐,能否实现该功能?
    cef3加载flash闪烁问题非easyhook的另外一种解决方法
    CEF加载FLASH插件时弹出CMD命令行窗口的问题
    【解决】 无法打开包括文件:“windows.h”: No such file or directory
    C# 把字符串类型日期转换为日期类型
    request:fail 小程序要求的 TLS 版本必须大于等于 1.2
    提高SQL查询效率
    jQuery设置下拉框select 默认选中第一个option
    解决浏览器Adobe Flash Player不是最新版本问题
    怎样在WIN7系统下安装IIS
  • 原文地址:https://www.cnblogs.com/aixiuxiu/p/6541826.html
Copyright © 2011-2022 走看看