JavaScript数据类型分类详解与typeof运算符应用

JavaScript数据类型分类详解与typeof运算符应用

一、数据类型分类

1.1、数据类型分类

JavaScript的数据类型为弱类型,即最开始的时候并不知道变量是什么类型,必须通过后面的值才能知道。JavaScript的数据类型分为简单数据类型(也称为基本数据类型)和复杂数据类型(也称为引用数据类型)。基本数据类型有:Number、String、Boolean、Undefined、Null复杂数据类型有:Object

基本数据类型

1.2、typeof 操作符

语法:typeof(变量) / typeof 变量。例1:typeof的使用

var num1 = 10;

console.log(typeof(num1), typeof num1);//number number

可以查看这篇文章:最简单的方式理解typeof、instanceof、hasOwnProperty

1.3、Number 类型Number类型即数值类型,主要作用于存储数据,参与数学运算。例1:Number 类型即数值、数字

// 1.1 普通整数和小数

var num1 = 10;

var num2 = 2.5;

console.log(typeof(num1), typeof num2);

// 1.2 负值

var num3 = -0.2;

console.log(num3, typeof num3);

// 1.3 八进制,以0开头并且没有超过8的值,则为8进制

var num4 = 070;

console.log(num4, typeof num4); // 56 number

// 1.4 十六进制,0x开头,则为16进制

var num5 = 0x10;

console.log(num5, typeof num5); //15 number

Number类型即数值类型,即数字,包括整数、小数、八进制、十六进制等,除这些简单的数字以外,在Number类型中还有几个比较特殊的情况。

例2:特殊的Number类型

//1.1 NaN not a number 算术运算不能得到正常数字都会返回NaN

var num5 = 'a' - 5;

console.log(num5, typeof num5); // NaN number

// 1.2 无穷大

var num6 = 1 / 0;

console.log(num6, typeof num6); // Infinity number

// 1.3 小数相加 会有一点偏差

console.log(0.1+0.2); // 0.30000000000000004

在上面特殊的Number类型中,需要特别注意的就是NaN,算术运算不能得到正常数字都会返回NaN,并且任意两个NaN都是不相等的。

1.4、String 类型String类型即字符串类型,是用引号引起来的数据,单双引号都可以,“web” 或’w’。例1:string 类型

var str1 = 'abc';

var str2 = "123";

console.log(typeof str1,typeof str2); //string string

需要注意的是,除了引号引起来的是字符串以外,所有我们从input表单中获取的用户输入的内容都是字符串,哪怕输入的是数字。例2:

oBut.onclick = function () {

var value = oIn.value;

console.log(typeof value); // string

}

字符串是用来数据存储使用频率非常高的一个类型,其中最基本的操作有:

字符串.length : 获取当前字符串的长度

字符串.charAt(下标):在字符串中获取对应下标的字符,下标从0开始

字符串[下标]:在字符串中获取对应下标的字符,ie7及以下获取到undefined

例3:

var str = "abc";

// 字符串.length属性 获取字符串的长度,从1开始数

console.log(str.length); //3

// 字符串.charAt(下标) 获取字符串中某一位字符 下标(位置):从0开始

console.log(str2.charAt(0)); //a

console.log(str2[0]); // IE7及以下返回undefined

1.5、Boolean 类型例1:Boolean 类型只有真和假,即 true、false

var bool1 = true;

var bool2 = false;

console.log(typeof bool1);

console.log(10>20); //false

if(10>20){

// if的小括号里面,会自动转换成boolean类型

alert(true)

};

除了通过比较能得到Boolean的值以外,还有一个口诀来判断条件是否为真:“非0为真,非空为真”即0为假,其他数字为真,空字符串为假,其他为真。

1.6、null 与 undefined例1:null 表示值为空,undefined 表示变量没有初始化,值的空缺。

// null 表示值为空

var nu = null;

console.log(nu, typeof nu); // null 'object'

// undefined

var def; // 变量没有初始化,表示值的空缺

console.log(def, typeof def); // undefined 'undefined'

null: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。undefined:Undefined类型,当声明了一个变量未初始化时,得到的就是undefined。

区别:null是JavaScript的关键字,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是JavaScript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。undefined:Undefined类型,当声明了一个变量未初始化时,得到的就是undefined。null是JavaScript的关键字,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是JavaScript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。

复杂数据类型

1.7、Object对象类型object:具体的东西(事物)都可以看作对象,也就是说万物皆对象(从页面当中获取的所有元素(标签)都是对象类型)。例1:

console.log(typeof document); // object

console.log(typeof window); // object

var obj = new Object();

console.log(typeof obj); // object

var obj1={

name:"LiuQing",

age:18,

city:"北京"

};

// 获取属性值

console.log(obj1.name); // LiuQing

console.log(obj1['age']); // 18

console.log(typeof obj1); // object

声明object对象类型有两种方式,一种通过关键字new实例化对象(var obj=new Object()),还有一种通过字面量的形式声明对象(var obj1={})。在object数据类型中,存储值时,通过键值对的形式存储(name:”LiuQing”)其中name叫做键名(属性名),”LiuQing”叫做键值(属性值)。

1.8、函数 function函数主要用于存储代码块,在需要的时候调用,因此一个完整的函数过程有两步,存和用。例2:

函数是用来存储代码块的,在需要的时候调用

// 声明函数:function 函数名(){ 代码块 }

function fun() {

console.log("函数");

}

console.log(typeof fun); // function

fun(); // 调用函数

1.9、数组 array数组可以将多个数据存储在一起,js 里面的数组项没有类型限制,一个数组当中可以存放任意类型的数据。例4:

// 数组 可以存储任意类型的数据,如下,数组中放了对象和数组

var arr = [1,'fd',{

'name':'fd'},[23,4]];

console.log(arr, typeof arr);

console.log(arr.length); // 获取数组中元素的个数

console.log(arr[2]); // 通过下标获取数组某一项,下标从 0 开始

2.0、typeof 返回值

所有的数据类型通过typeof得到的类型有:

如果这个值未定义,返回----“undefined”

如果这个值是布尔值,返回----“boolean”

如果这个值是字符串,返回----“string”

如果这个值是数值,返回----“number”

如果这个值是对象或null,返回----“object”

如果这个值是函数,返回----“function”

相关推荐