Js的数据类型以及相关函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xyh930929/article/details/85225656

下图是js的数据类型导图,后面是重点类型的相关介绍:

上图中部分数据类型的说明

1. undefined:在使用var声明变量声明但未对其初始化时,这个变量的值就是undefined.

var msg;
alert(msg);//声明但未初始化,结果是undefined
alert(msg1);//既没有声明也没有初始化,也返回undefined

2. null:表示一个空对象指针。

alert(typeof null);//object

实际上,undefined是派生自null的,js规定它们两个值在相等性测试要返回true。

alert(undefined == null);//true

3. Number类型的相关函数:有3个函数可以把非数值转换成数值Number()parseInt()parseFloat()

  3.1 Number()

  • 如果是布尔值,true和false将被转换成1和0
  • 如果是数字,原样返回
  • 如果是null,返回0
  • 如果是undefined,返回0
  • 如果是数字字符串
    • 若字符串中只有数字,将会被转化成十进制数(如果包括0x开头的有效字符串,也会转为10进制),且去掉前导0,例如"123"转为123,"0123"转为123
    • 如果是空字符串,则返回0
    • 除了上面的两种字符串以外,其余字符串都是NaN
  • 如果是引用类型对象,则调用对象的valueOf()方法,然后按照上面的过程转换返回的值,如果转换的结果是NaN,则调用对象的toString()方法,然后按照上面字符串的转换方式转换。
        console.log(Number(true));//1
        console.log(Number(null));//0
        console.log(Number(undefined));//NaN
        console.log(Number("001111"));//1111
        console.log(Number(""));//0
        console.log(Number("你好"));//NaN
        console.log(Number(new Object()));//NaN

  3.2 parseInt()

  • 如果parseInt转换的字符串第一个字符是数字字符,会继续解析第二个字符,直到遇到一个非数字字符。
  • 如果字符串以0x开头会按照十六进制来转换。
  • parseInt还有第二个参数,可以按照指定进制数去转换。
        console.log(parseInt("1234hello"));//1234
        console.log(parseInt(""));//NaN
        console.log(parseInt("0xa"));//10
        console.log(parseInt("22.2"));//22
        console.log(parseInt("070"));//70
        console.log(parseInt("AF"));//NaN
        console.log(parseInt("0xb",16));//11
        console.log(parseInt("AF",16));//175
        console.log(parseInt("10",2));//2
        console.log(parseInt("10",8));//8
        console.log(parseInt("10",10));//10
        console.log(parseInt("10",16));//16

  3.3 parseFloat()

  • parseFloat与parseInt的解析方式一致,只不过会多解析一个小数点,但是遇到第二个小数点就不会再解析了。
  • parseFloat转换16进制格式的字符串始终都会被转换成0.
        console.log(parseFloat("123hello"));//123
        console.log(parseFloat("0xA"));//0
        console.log(parseFloat("22.2"));//22.2
        console.log(parseFloat("22.22.22"));//22.22
        console.log(parseFloat("0201.2"));//201.2
        console.log(parseFloat("3.1415e7"));//31415000

4. String类型相关的toString()方法

  • 数值、布尔值、对象和字符串值都有一个toString()方法,但是null和undefined值没有这个方法。如果用undefined和null调用toString()方法,会报错Uncaught TypeError: Cannot read property 'toString' of undefined或者Uncaught TypeError: Cannot read property 'toString' of null
  • toString()还可以再传一个参数,可以通过这个参数控制toString方法以二进制、八进制、十六进制等方法表示字符串。
        console.log(num.toString());//10
        console.log(num.toString(2));//1010
        console.log(num.toString(8));//12
        console.log(num.toString(10));//10
        console.log(num.toString(16));//a
  • 当不知道一个值是不是null或者undefined的情况下,可以使用String()将这个值转换为字符串。String()会将null和undefined转成"null"和"undefined"。
        console.log(String(10));//10
        console.log(String(true));//true
        console.log(String(null));//null
        console.log(String(undefined));//undefined

5. Object类型相关方法

  • constructor:构造函数。用于创建当前对象的函数。
  • hasOwnProperty(propertyName):检查某个属性再当前对象实例(注意是实例不是原型)中是否存在。
  • isPrototypeOf(object):用于检查当前对象是否是当前对象的原型。
  • propertyIsEnumerable(propertyName):用于检查某个属性是否能用for-in语句来枚举。
  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象的字符串、数值或布尔值表示。

注意:toLocaleString()和toString()的区别:再打印一些信息的字符串上可能会收到地区的影响,例如打印时间:

        console.log(obj.toLocaleString());//2018/12/23 下午9:09:23
        console.log(obj.toString());//Sun Dec 23 2018 21:09:23 GMT+0800 (中国标准时间)

备注:本文内容是读“JavaScript高级程序设计”这本书整理的笔记。

猜你喜欢

转载自blog.csdn.net/xyh930929/article/details/85225656