数据类型及转换

本文介绍了JavaScript的数据类型,包括原始值(如number、string等)和引用值(object),并说明了二者存储方式的区别。还讲解了typeof操作符,以及显式和隐式类型转换的方法,如Number()、String()等函数的使用。

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

1.数据类型

(1)原始值:number、string、boolean、undefined、null、symbol

(2)引用值:object

(3)区别:原始值和引用值的存储方式不同,原始值在栈内存里放的是值,而引用值放的是堆地址,所以当将一个引用值赋值给一个变量时,拷贝的也是堆的地址,指向同一个地址,改变的时同一个引用值

2.typeof

返回字符串,表示传入值的数据类型

不同数据类型的返回值
    typeof function fn(){}           //"function"
    typeof "abc"                     //"string"
    typeof NaN                       //"number"
    typeof undefined                 //"undefined"
    typeof true                      //"boolean"
    typeof null                      //"object"
    typeof [1, 3]                    //"object"
    typeof {name: "lemon"}           //"object"
    typeof new String("abc")         //"object"

 

3. 类型转换

(1)显式类型转换

①Number():将括号内的值转换为数值型

传入原始值时

  • 数值 => 数值

  • 字符串 => 数值、NaN、0

  • 布尔值 => 1/0

  • undefined => NaN

  •  null => 0

传入引用值时

  • 先调用该引用值的valueOf方法,返回的值如果为原始值,则直接对该值使用Number()方法,结果如上所示

  • 若返回的值为引用值,接着调用对象自身的toString函数,如果返回值为原始值,则对该值使用Number

  • valueOf()   => 原始值 => Number()

                      => 引用值 => toString() => 原始值 => Number()

                                       => 引用值 => 报错

②String():将括号内的值转化为字符串

传入原始值 

  • 原始值  => 字符串

传入引用值

  • 先调用引用值的的toString方法,如果返回原始值,则对该值使用String方法
  • 如果返回引用值,再调用引用值自身的ValueOf方法,若返回原始值,则对该值使用String,若仍返回引用值,则报错
  • toString()   => 原始值 => String()

                      => 引用值 => valueOf() => 原始值 => String()

                                       => 引用值 => 报错

③ Boolean():将传入的值转换为布尔值

除了undefined/null/NaN/0/false/""转化为false之外,其它均为true

④parseInt(string, radix):以radix为基底,转化为10进制的整数

    parseInt("c", 16)    //12
    parseInt("10.5")    //10  不会四舍五入,直接去掉小数点
    parseInt("8abc")    //8

⑤parseFloat(string):转化为正常小数

parseFloat("12.6ac")    //12.6

⑥toString(radix):以10进制为基底转化为目标进制,undefined和null不可以使用toString()方法(不能形成包装类)

    [1,3].toString()    //"1,3"
    (10).toString(8)    //"12"
    true.toString()    //"true"
    ({name: "lemon"}).toString()    //"[object Object]"

(2)隐式类型转化

①四则运算  

    '1' + true  // '1true'
     1  + true  //2

②判断语句

    if("aaa"){
        console.log('aaa')  //"aaa"转化为布尔值为true,所以打印出"aaa"
    }

③Native调用,如console.log/alert

④isNaN():判断是否为NaN,先进行Number()转换

    isNaN(NaN)    //true
    isNaN(undefined)    //true
    isNaN(null)    //false

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值