javascript学习--五大基础数据类型:Null、Undefined、String、Number、Boolean

基础数据类型

js中有5种基础数据类型,分别是:Undefined、Null、Boolean、Number和String,以及一种复杂数据类型Object。js的数据属于松散类型,所以需要一种手段来测量给定变量的数据类型,即typeof

对一个值使用typeof将会返回以下几种值:undefined、boolean、number、string、object和function。

如下实例:

var a = "Apple";
alert(typeof a);     //string
alert(typeof (a));   //string
alert(typeof 123);   //number

上述例子第二句和第三句的意思其实相同,要注意的是,typeof是一个操作符而不是函数,所以在第三句中typeof后用括号将a包围起来是无效的,表意与第二句相同

Undefined

Undefined类型只有undefined一个值,使用var声明变量而未对其初始化时,这个变量的值就是undefined。

对于未被声明的变量执行typeof会得到undefined的值。

var a;
alert(typeof a);    //undefined
alert(typeof b);    //undefined

注意,上述代码中未对b声明,但是警示框会弹出两个undefined

Null

Null类型同样只有一个值–null。null值表示一个空对象指针,使用typeof检测null时会得到一个object。
如果要定义一个变量在将来保存对象,则可以先把该变量初始化为null。
undefined其实是派生自null的,当对它们两个使用“==”符号时,会返回true,虽然这是因为该符号出于比较目的会转化其操作数。

Boolean

Boolean只有两个值,true和false,需要注意,js是区分大小写的,True和False都不是boolean值。

虽然Boolean类型的值只有两个,但是js中所有类型的值都可以转换成与Boolean等价的值----通过Boolean()函数。

以下有某些数据类型中可以转化为true的值:

  • 任何非空字符串–String类型
  • 任何非零数字值(包括Infinity)–Number类型
  • 任何对象–Object类型

以下有某些数据类型中可以转化为false的值:

  • 空字符串–String类型
  • 0和NaN–Number类型
  • null–object类型
  • undefined–Undefined类型

其中,Undefined类型的任何值都无法转换为true值

在使用if()语句时,括号内的条件会自动的调用Boolean()函数

Number

在js中,Number类型的数值可以是整型也可以是浮点型,若是数值极大或极小,可以用e表示法,例如:
3e7等于30000000
其实际意义为“3乘以10的7次方”

浮点数值的最高精度为17位小数,但在计算时精确度远远不如整数。例如:
0.1加0.2的结果不是0.3,而是0.300000000000000004,这个小小的误差将会导致测试某些特定的数值时出现巨大失误。所以,永远不要测试某个特定的浮点数值。

Infinity是无穷数值,可以为正也可以为负,而且它无法参加计算,为了避免可能出现的Infinity值导致计算链终止,可以使用isFinite()函数。这个函数会在遇到无穷数值时返回false

NaN,Not a Number,这是个特殊的数值,它用于表示一个本来要返回数值的操作数未返回数值的情况。任何数值除以非数值会返回NaN。任何与NaN相关的数值操作例如1+NaN也会返回NaN。NaN不等于它本身。

涉及数制转换时可用三个函数:Number()、parseInt()和parseFloat()

Number()的转换规则:

  • 若是布尔值,则true转1,false转0
  • 若是数字值,则传入什么就传出什么
  • 若是null,则转0
  • 若是undefined,则返回NaN
  • 若是字符串,则会有下列情况
    1、若只有整型或浮点型数字,则如数字值一样转换,且忽略前导零和前后空格
    2、若含有多个小数点,则返回NaN
    3、若为十六位进制格式,如“0xf”,则转为相应的十进制整数
    4、若为空字符串,则返回0
    5、若包含任意其他字符,则返回NaN
  • 若为对象,先调用对象valueOf()方法,然后按照以上规则转换,若返回的是NaN,则再调用对象的toString()方法,然后再按照上述规则转换

对对象使用Number()方法,实际上会有两种情况,如果是Date对象,则返回1970年1月1日到Date的毫秒数,其他则返回NaN

var p={
		a:"012"
	}
	var s="  1.1"
	var q="1.1.1"
	var date=new Date()
	console.log(Number(p))     //NaN
	console.log(Number(p.a))   //12
	console.log(Number(s))     //1.1
	console.log(Number(q))     //NaN
	console.log(Number(date))  //1596516802742

parseInt()方法,它会忽略前导空格,直到遇见第一个非空格,若第一个非空格不是数值或负号,则直接返回NaN,遇到第一个数值或负号后,它会忽略第一次遇到的小数点和小数点之后的内容

var p={
		a:"012"
	}
	var s="  1.1"
	var q="1.1.1"
	var k="1.s"
	console.log(parseInt(q))     //1
	console.log(parseInt(k))     //1
	console.log(parseInt(p.a))   //12
	console.log(parseInt(s))     //1

可以为pasreInt()传入第二个参数,指定将第一个参数视为相应进制解析

var g="0xf"
console.log(parseInt(g,16))  //15

一般都需要为pasreInt指定第二个参数

pasreFloat()与pasreInt类似,但它只能解析十进制,无法传入第二个参数,它不会忽略第一个小数点,但会忽略第二个小数点,它会忽略前导的零

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页