JavaScript基础数据类型概述、类型转换及Object类型

基础数据类型

ECMAScript中有五种简单的数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、String。还有一中复杂数据类型 Object,Object本质上是由一组无序的名值对组成。

ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。

typeof操作符

ECMAScript是松散类型的,所以需要一个手段来检测给定变量的操作类型  typeof 。对一个值使用typeof操作符可能返回下列某个字符串:

undefined ---------- 如果值未定义 Undefined

boolean ---------- 如果这个值是布尔值 Boolean

string ---------- 如果这个值是字符串 String

number ---------- 如果这个值是数值类型 Number

object ---------- 如果这个值是对象或null Object

需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用

undefined

var 变量声明,但是未初始化时,会返回undefined。

Null

Null类型是第二个只有一个值的数据类型,这个特殊的值是null。null表示一个空对象指针,

console.log(typeof(null));   // "object"

undefined和null的区别:

undefined值是派生自null的,二者相等,但是不是绝对相等:

console.log(null == undefined);  //true
console.log(null === undefined);  //false

在定义变量时没必要将一个变量显式地设置为undefined;但是在保存对象的变量还没有真正保存对象,就应该明确让变量保存为null。

Boolean

有两个属性值:true  false。且区分大小写。

转换规则:

数据类型转化为true的值转换为false的值
Booleantruefalse
String任何非空字符串""(空字符串)
Number任何非0数字值0和NaN
Object任何对象null
undefined不适用undefined

这个规则对理解流控制语句(如if语句)自动执行相应的Boolean转换非常重要。

var str = "Hello World!";
console.log(Boolean(str));
if(str){
	alert(str);
}

字符串str自动转换为Boolean值(true),由于存在这s种自动执行的Boolean转化,因此确切地知道在流程语句中使用的是什么变量至关重要。错误地使用一个对象,而不是一个Boolean值,剧有可能彻底改变应用程序流程。

也可以使用(!)将对象转化为布尔值,然后(!!)是对这个对象的值先转换为布尔值,然后进行取反。

Number

1.浮点数

保存浮点数所需的空间是整数的2倍,所以ECMAScript会不失时机将浮点数值转换为整数。

var floatNum1 = 1.;
var floatNum2 = 10.0;
console.log(floatNum1,floatNum2);   // 1 10

2.数值范围

判断数值是否是无穷的,使用isFinite()函数,这个函数判断,在数值范围内返回true,否则返回false。

3.NaN(Not a Number)

表示本来返回数值的操作数,但是未返回数值的情况。

特点:1.任何涉及NaN的操作,都会返回NaN    2.NaN与任何值都不相等,包括NaN本身。

isNaN()这个函数接收一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收到一个数值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值。任何不能被转换为数值的值都会导致这个函数返回true。

alert(isNaN(NaN));   //true
alert(isNaN(10));    //false
alert(isNaN("NaN")); //true

4.数值转换

规则很多,直接看例子Number():

console.log(Number("Hello World!"));    // NaN
console.log(Number(""));   		//0
console.log(Number("00033"));	        //33
console.log(Number(true));		//1
console.log(Number(NaN));		//NaN
console.log(Number(null));		//0
console.log(Number(undefined));		//NaN

parseInt()和parseFloat()用于把字符串转化为数值。

console.log(parseInt("0022.5"));    //22
console.log(parseInt(22.5));	    //22
console.log(parseFloat("0022.5"));  //22.5

可以看出:parseFloat()解析一个字符串,并返回一个浮点数。parseInt()解析一个字符串,并返回一个整数数。而且二者均省略了前导0。

String

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(')或双引号(")表示。

转换为字符串:1.toString()    2.String()

//方法1
console.log((11).toString());    	 //"11"
console.log(typeof (11).toString()); //string

//方法2
var age;
console.log(String(12));       //"12"
console.log(String(true));     //"true"
console.log(String(null));     // "null"
console.log(String(age));      //"undefined"

注:null和undefined没有toString()方法。

Object类型(非基本数据类型)

对象实际是一组数据和功能的集合。对象可以通过执行new操作符后要创建的对象类型的名称来创建。在创建完成后,可以添加属性和方法。

var o = new Object();

在ECMAScript中,Object类型是它所有的示例的基础。

Object的每个实例都有下列属性和方法:

1.constructor:保存着用于创建当前对象的函数,对于前面例子而言,构造函数(constructor)就是Object()。

2.hasOwnProperty(prototypeName):用于检查给定的属性在当前对象实例中是否存在,prototypeName必须是字符串。

3.isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型。

4.propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in循环

5.toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。

6.toString():返回对象的字符串表示。

7.valueOf():返回对象的字符串、数值或布尔值表示。与toString()结果相同。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值