判断变量类型的方法(上):js中的数据类型1

1. js一共6种数据类型:

  • 5中基本数据类型(也叫做简单数据类型)

Undefined Null Boolean Number String

  • 1种复杂数据类型

Object

2. typeof操作符检测结果

  • “undefined” // 这个值未定义,声明了没有给值
  • “boolean” // 这个值是布尔值
  • “string” // 这个值是字符串
  • “number” // 这个值是数值
  • “object” // 这个值是对象或null
  • “function” // 这个值是函数

3. Null类型

Null类型是第二个只有一个值的数据类型(另一个是Undefined),这个特殊的值是null。

null的使用

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其它值。这样一来,只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用,如下面的例子所示:

if(car != null){
 // 对car 对象执行某些操作
}
复制代码

typeof检测null值时会返回”object”

从逻辑上讲,null值表述一个空对象指针,而这正是使用typeof检测null值时会返回”object”的原因

image.png

undefined == null 为true

实际上,undefined值派生自null值,因此ECMA-262规定测试它们的相等性测试要返回true

image.png

4. Boolean类型

  • 该类型只有两个字面值:true 和 false

– 数据类型对应转换规则表

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 “” (空字符串,注意,如果字符串有空格也不是空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined undefined

5. Number类型

进制的表示

– 10进制,

最基本的数值字面量格式,可以直接在代码输入
var intNum = 55

– 8进制:

八进制的字面值第一位必须是0,后面是8进制序列(0-7)

在严格模式下无效,支持严格模式的JavaScript引擎会抛出错误

var octalNum1 = 070  // 八进制的56
var octalNum2 = 079  // 无效的八进制值,接续为 79
var octalNum3 = 08   // 无效的八进制,解析为8
复制代码
– 16进制

十六进制的前两位是0x,后面是16进制序列(0-9及A-F),字母A-F也可以小写

var hexNum1 = 0xA  // 16进制的10
var hexNum2 = 0x1f  // 16进制的31
复制代码

在进行算术运算时,所有的8进制以及16进制表示的数值最终都会被转成16进制数值

NaN

Not a Number 是一个特殊的数值,这个数值便是一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)

NaN的特点:
  1. 任何涉及NaN的操作(例如NaN/10)都会返回NaN。
  2. NaN和任何值都不相等,包括NaN本身

image.png

isNaN()函数
  1. isNaN()在接收一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串”10″或Boolean值
  2. 任何不能被转为数值的值都会导致这个函数返回true

image.png

数值转换

  1. 有三个函数可以将非数值转换为数值:
  • Number()
  • parseInt()
  • parseFolat()

Number()可以用于任何数据类型
parseInt()、parseFlost() 专门用于把字符串转换成数值
2. Number() 函数转换规则如下

  • 如果是Boolean值,true和false将分别转换为1和0

  • 如果是数字值,只是简单的传入和返回

  • 如果是null值,返回0

  • 如果是undefined值,返回NaN

  • 如果是字符串,遵循下列规则

    1. 如果字符串中只包含数字(包括前面带正负号的情况),则将其转换为10进制值,"011"会变成11(注意,前导0被忽略了)
    复制代码

image.png

2. 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导0)
3. 如果字符串中包含有效的16进制格式,例如"0xf",则将其转换为相同大小的10进制整数值
复制代码

image.png

4、如果字符串是空的(不包含任何字符或者空格字符也是可以的),则将其转换为0
复制代码

image.png

5. 如果字符串中包含除上述格式之外的字符,将其转换为NaN
复制代码

image.png

6. 如果是对象,则调用对象的valueOf()方法,然后按照前面的规则转换返回的值。如皋转换的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值
复制代码

未完待续—

摘自:
《Javascript 高级程序设计 (第三版)》

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享