JavaScript类型和强制类型转换

JavaScript中的类型

值的类型

  • null
    只要变量要保存对象,而当时又没有哪个对象可保存,就要用 null 来填充该变量。这样就可以保持 null 是空对象指针的语义(typeof null == "object"),并进一步将其与undefined 区分开来
  • undefined
    已在作用域中声明但还没有赋值的变量,是undefined。相反,还没有在作用域中声明过的变量,是 undeclared的, 如这样的报错ReferenceError: b is not defined意思是 b 是 undeclared, 没有声明
  • boolean
    布尔值虽然只有两个但是所有其他 ECMAScript 类型的值都有相应布尔值的等价形式。可以使用 Boolean() 转型函数,将其他类型的值转换为布尔值。 所以对if等控制流语句的时候会自动转换为布尔值
  • number
  • symbol
  • object
  • string

typeof

typeof 是一个操作符而不是函数

任何情况下为对未声明的标识(undeclare)符进行操作都会报错,唯独可以使用 typeof 操作符, 返回的是undefined
typeof null === "object"

强制类型转换

在JavaScript中许多情况下都会发生强制类型转换, 如在使用==就会发生
规则如下:

ToString
  1. 基本类型值的字符串化规则为:null 转换为"null",undefined 转换为"undefined",true 转换为"true"。数字的字符串化则遵循通用规则

  2. 对普通对象来说,除非自行定义,否则toString()(Object.prototype.toString())返回内部属性[[Class]] 的值,如普通对象的[[Class]],都是[object object];

    判断一个变量是对象还是数组可以使用x.toString()方法,如返回的是[object Array]这就代表数组

  3. 数组的默认toString() 方法经过了重新定义,将所有单元字符串化以后再用"," 连接起来:

 var a = [1,2,3];
   a.toString(); // "1,2,3"
  1. JSON
ToNumber

true 转换为1,false 转换为 0。undefined 转换为 NaN,null 转换为0。

对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。

ToBoolean

以下这些是假值:
• undefined
• null
• false
• +0、-0 和NaN
• “”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值