js(二)-- 类型的转换

来源:互联网 发布:热血江湖人工智能披风 编辑:程序博客网 时间:2024/06/05 00:49

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

显示类型转换


当然,想要判断数据是什么类型的,得有工具呀,要不怎么来判断它的类型是什么的呢?
我们有一个操作符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")//=>123Number("undefined")//=>NaNNumber(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.2parseFloat('123.2abc') // 123.2parseFloat('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); // falseBoolean(undefined); // falseBoolean(null); // falseBoolean(''); // falseBoolean(NaN); // false

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

隐式类型转换


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

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

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

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

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

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

===严格等于

!==严格不等于

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

原创粉丝点击