03-JavaScript中的typeof和类型转换

一、typeof

typeof用来检测给定变量的数据类型的操作符。typeof 可能返回一下某个字符串: 

  • " undifined "   ——如果这个值未定义
  • " boolean "——如果这个值是布尔值
  • " string "   ——如果这个值是字符串
  • " number "   ——如果这个值是数字
  • " object"   ——如果这个值是对象或者null
  • " function "   ——如果这个值是函数

 

var text = "some string";
typeof (undefined); // " undefined "
typeof (null);      // " object "
typeof (text) ;     // " string "
typeof ([]) ;       // " object "
typeof (true) ;     // " boolean "
typeof 90 ;         // " number "
typeof what         // " undefined " (what 是未定义的变量)

需要注意的是当typeof检测的变量全加上引号的时候,那么他会认为所有变量都为 “string”(例如:“undefined”、“null”、“[1,2,3]”)

typeof操作符的操作数既可以是变量(text),也可以是数值字面量,typeof是一个操作符而不是函数,所以它的括号不是必须的,从最后两个例子中可以看出这一点。

可能有一点会领我们很疑惑,null是原始数据类型,为什么typeof会返回我们一个 object呢,其实这是一个历史遗留的问题,因为当时设计时,特殊值 null 被认为是一个空对象的引用。(JavaScript高级程序设计中的解释)

 

typeof 返回的是字符串 ! typeof返回的是字符串 ! typeof返回的是字符串 !(重要的事情说三遍)

alert ( typeof (typeof (undefined) )  // ?

如果你认为它打印出来的是 “undefined” ,那么请你在将typeof返回的是字符串读三遍

因为 typeof(undefined)返回的是 “undefined”,那么typeof(“undefined”)打印出来的应该是 “string”

 二、类型转换

  • 显式类型转换
  • Number( mix )                     可用来转换所有类型值,它会忽略前导0,undefined 返回NaN,null 返回 0
  • parseInt( string,radiux )       用来转换字符串格式,第二参数为基数,表示把以基数为进制的字符串转换为十进制
  • parseFloat( string )              用来转换字符串格式,忽略前导0 
  • Boolean( )
  • String( mix )
  • toString ( radiux )                 是一个方法,需要点出来,例如 num.toString(),他是将一个十进制的数转换为以基数为进                                               制的数。

 

Number ("123")     // 123
Number (456)       // 456
Number ("abc")     // NaN
Number ("123abc")  // NaN
Number (true)      // 1
Number (undefined) // NaN
Number (null)      // 0

parseInt (123.456)   // 123
parseInt ("123abc")  // 123
parseInt ("true")    // NaN
parseInt (15,16)     // 21  (将 16进制的 15 转换为 10进制)

var num = 21;
num.toString(16)      //15  (将 10进制的 21 转换为 16进制)
  • 隐式类型转换

  • isNaN ( )                                           在转换时会先调用 Number (),然后在判断Number返回的值
  • ++ / --     +/-(一元正负)                   在转换时会先调用 Number (),然后在判断Number返回的值

  • +                                                       如果相加的数有一个字符,就会调用String(),将两个加数都变成字符串

  • * / -                                                    在转换时会先调用 Number ()

  • &&  ||  !                                            转换为布尔值进行判断

  • ==                                                      会先转换为相同的类型在进行值的比较

  • <    >    <=    >=                                  字符串和数字比较,会先转换为数字,数字优先

 

true > false      // 1>0   true
"true" > false    //false

NaN = NaN         //false

undefined > 0     //false
undefined < 0     //false
undefined = 0     //false

null > 0          //false
null < 0          //false
null = 0          //false

undefined = null  //true

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值