JS——数据类型和类型转换

本文详细介绍了JavaScript中的数据类型,包括数值、字符串、布尔值等,并深入探讨了类型转换的规则,例如转Boolean、转Number及转String的具体过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据类型和类型转换
-  数值(number):整数和小数
- 字符串(string):文本
- 布尔值(boolean):表示真伪的两个特殊值,true和false
- undefined:表示“未定义”或不存在,没有任何值
- null:表示空值,值为空
- 对象(object):各种值组成的集合
- Symbol:ES6新增,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。

原型数据类型和引用数据类型两大类。
类型转换##

  • 转Boolean:在条件判断时,除了undefined,null,false,NaN,'',0,-0,其他所有值都转为true

  • 转换为数值(number)类型:

    使用Number()方法转换,在ES5规范中定义了抽象操作ToNumber

    1. Undefined类型的值转换为NaN
    2. Null类型的值转换为0
    3. Boolean类型的值,true转换为1,false转换为0
    4. String类型的值转换如同使用Number()函数进行转换,如果包含非数字值则转换为NaN,空字符串为0
    5. Symbol类型的值不能转换为数字,会报错
    6. 对象(包括数组)会首先被转换为相应的基本数据类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。为了将值转换为相应的基本类型值,抽象操作ToPrimitive会首先(通过内部操作DefaultValue)检查该值是否有valueOf()方法。如果有并且返回基本类型值,就使用该值进行强制类型转换。如果没有就使用toString()的返回值(如果存在)来进行强制类型转换。如果valueOf()toString()均不返回基本类型值,会产生TypeError错误。
  • 其他值转为字符串:

    ToString,负责处理非字符串到字符串的强制类型转换。

    1. Null和Undefined类型,null转化为"null",undefined转换为"undefined"
    2. Boolean类型,转换为"true"、“false”
    3. Number类型的值直接转换,不过极小和极大的数字会使用指数形式
    4. Symbol类型的值直接转换,但是只允许显示强制类型转换,使用隐式强制类型转换会产生错误
    5. 对象,对于普通对象来说,除非自定义的toString()方法,否则会调用toString()(Object.prototype.toString())来返回内部属性[[Class]]的值,如"[object Object]"。如果对象有自己的toString()方法,字符串转换时就会调用该方法并使用其返回值
2,typeof

// 基本类型
typeof 1 // ‘number’
typeof NaN // ‘number’ 意指“不是一个数字”,NaN是一个“警戒值”,有特殊用途的常规值,用于指出数字类型中的错误情况,即“执行数学运算没有成功,这是失败后返回的结果”。它和自身不相等,是唯一一个非自反(自反,reflexive,即 x === x 不成立)。而NaN != NaN为true
typeof “1” // ‘string’
typeof undefined // ‘undefined’
typeof true // ‘boolean’
typeof Symbol() // ‘symbol’

// 对象类型,除函数外都显示object
typeof {} // ‘object’,{}valueOf结果为{},toString结果为"[object Object]"
typeof [] // ‘object’,[]valueOf结果为[],toString结果为""
typeof conlose.log // ‘function’

typeof null // ‘object’
// null类型是基本类型,但是会显示object,这是一个存在很久的bug
// 在最初的js版本中使用的是32位系统,000开头代表是对象,null表示为全零

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值