js(二)-- 类型的转换

本文详细介绍了JavaScript中的类型转换方法,包括显示类型转换如Number(), Boolean()等,以及隐式类型转换如算术运算符中的类型自动转换。此外还讨论了如何使用typeof确定变量类型,并提供了parseInt(), parseFloat(), toString()等函数的具体用法。

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

说到类型的转化,很容易想到什么类型的转化,是隐式类型还是显示类型。那么今天就看一下这个变换吧。

显示类型转换


当然,想要判断数据是什么类型的,得有工具呀,要不怎么来判断它的类型是什么的呢?
我们有一个操作符typeof可以检测数据的类型。

typeof()//它的返回值就是数据的类型。

typeof能返回的类型一共只有6种:

numner、string、boolean、undefined、object、function

数组和null类型的都属于object。其实null并不是一种对象,只是因为历史遗留性的问题,null通常用来作为对象占位符,所以被浏览器归到了object里面了。上文说到系统为什么识别null是对象的了。

• NaN属于number类型。虽然是非数,但是非数也是数字的一种。

• 同时,typeof返回的结果其实是一种字符串,我们可以用typeof来测试。

typeof(typeof(123))//==>string
  • Number(mix)
    • 这个方法是可以把其他类型的数据转换成数字类型的数据.
Number("123")//=>123
Number("undefined")//=>NaN
Number(true)//=>1
  • font color=”red” size=”4px”>parseInt(string, radix)
    • 这个方法是将字符串转换成整型类型数字的。其中第二个参数radix基底是可以选择的参数。
      当radix为空的时候,这个函数的作用仅仅是将字符串转换成数字。
      当参数string里面既包括数字字符串又包括其他字符串的时候,它会将看到其他字符串就停止了,不会继续转换后面的数字型字符串了。
        parseInt('123abc345') // 123
        parseInt('abc123') // NaN
        parseInt('123') // 123
        parseInt('abc') // NaN
        parseInt(true) // NaN

当radix不为空的时候,这个函数可以用来作为进制转换,第二个参数的作用则是,我们把第一个参数的数字当成几进制的数字来转换成十进制。

• radix参数的范围是2-36。

var demo = 11;
parseInt(demo, 16) // 17

是这样解释的,十六进制的11转化为十进制是多少,这个适合于已知进制转化为十进制。

  • parseFloat( string)
    • 这个方法和parseInt方法类似,是将字符串转换成浮点类型的数字,同样是碰到第一个非数字型字符停止,但是由于浮点型数据有小数点,所以它会识别第一个小数点以及后面的数字,但是第二个小数点就无法识别了。
parseFloat('123.2.3') // 123.2
parseFloat('123.2abc') // 123.2
parseFloat('123.abc') // 123
  • toString(radix)
    • 这个方法和前面的都一点不同,它是对象上的方法,任何数据类型都可以使用,转换成字符串类型,涉及到包装类的一些知识。
      同样radix基底是可选参数,当为空的时候,仅仅代表将数据转化成字符串。
var num = 111;
num.toString()//=>string 111

当写了radix基底的时候,则代表我们要将这个数字转化成几进制的数字型字符串。

var demo = 10;
demo.toString(2) // "1010"

这个进行进制的转换比较方便,然后配合parseInt(),这样可以进行任意一个进制之间的转换。

var num = 10var num1 = parseInt(num,16);//把十六进制的10转换为16进制。
var str = num1.toString(2);//=>"10000" 把十六至今的num1,转化成二进制的数。
  • String()
    • 和Number差不多,直接转换成字符串类型的,也没有什么别的功能。
  • Boolean()
    • 和Number类似,把任何类型转换成布尔类型。
Boolean(0); // false
Boolean(undefined); // false
Boolean(null); // false
Boolean(''); // false
Boolean(NaN); // false

记着这几个为false的,剩下的就是true。

隐式类型转换


  • isNaN()
    isNaN(NaN); // true
    isNaN('abc'); // true
    isNaN(123); // false

这中间隐含了一个隐式转换,它会先将你传的参数调用一下Number方法之后,再看看结果是不是NaN,不过这个方法可以检测NaN本身。

  • 算术运算符
var demo = 'abc';
demo++; //NaN
demo = '123';
++demo; //124
demo = '123';
demo++;  //123

这是++运算符,可以调用隐式的Number属性,先将demo转换成数字类型的,然后再运算。
+、-、*、/在执行之前都会先进行类型转换,都转换成数字类型的在进行运算。

  • 逻辑运算符也会隐式调用类型转换
    • &&和||都是先把表达式调用Boolean,换成布尔值再进行判断,看看是true还是false,不过返回的结果还是本身表达式的结果。
      !取反操作符返回的结果也是调用Boolean方法之后的结果。

当然也有不发生类型转换的比较运算符

===严格等于

!==严格不等于

因为这两个运算符,就是要么就是严格等于,要么就不等于,所以没有什么可以比较的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值