ECMAscript数据类型分为;
5种基本数据类型(简单数据类型或原始类型)和1种复杂数据类型。
5种基本数据类型分别是:
undefined 未定义类型
null 空类型
Boolean 布尔类型
number 数值型
string 字符串类型
1种复杂数据类型:object 对象类型
检测变量的数据类型(typeof操作符):typeof 变量名 或者 typeof(变量名)
可能返回以下类型(字符串):
"undefined" 如果这个值未定义;
"boolean" 如果这个值是布尔值;
"number" 如果这个值是数值;
"string" 如果这个值是字符串;
"object" 如果这个值是对象或null;
"function" 如果这个值是函数;
^ Undefined --未定义类型
Undefined类型只有一个值,即特殊的 undefined。
1).使用var声明变量但未赋值(未初始化)时,这个变量的值就是undefined。检测其类型也是undefined。
var a;
console.log(a); //undefined
console.log(typeof a);//undefined
2).变量从未定义过,检测其类型为undefined,值报错。
console.log(a); //报错:a is not defined
console.log(typeof a);//undefined
^ Null--空类型
Null类型是第二个只有一个值的类型,这个特殊值是null。null值表示一个空对象指针。
Null是特殊的对象类型:object。
var a = null;
console.log(a);//null
console.log(typeof a);//object
实际上,undefined值是派生子null值的,因此ECMA-262规定他们的相等性测试要返回true。
console.log(undefined == null);//true
^ Boolean --布尔类型
Boolaen类型是ECMAScript中使用的最多的一种类型。
Boolean类型只有两个值:true(真)/flase(假)。
调用转型函数:Boolean()可以将ECMAScript中所有类型的值都转换城相应的布尔值。
var a = 'hello world';
console.log(Boolean(a));//true
1).除0和NaN之外的所有数字,转换为布尔型都是true。
2).除" "之外的所有字符,转换为布尔型都为true。
3).null和undefined转换为布尔型为false。
总结:转换为false的值只有6个:fslae本身;" "(空字符串);0;NaN(非数值);null;undefined。
^ Number--数值类型
整数 : 100、13、5、33
浮点数值(有些语言中称为双精度数值) :1.2 3.1415
[图片上传中...(微信截图_20190724204300.png-2c27df-1563975423037-0)]
*NaN:not a Number 不是一个数字。特殊的数值类型。
表示一个本来要返回数值的操作数 未返回数值的情况。
NaN特点:
1).任何涉及NaN的操作都会返回NaN。
2).NaN与任何值都不相等,包括NaN本身。
console.log(NaN == NaN);//falsa
isNaN(参数):判断参数是否 “不是数值”。如果是,数值返回false,不是数值返回true。
console.log(isNaN(NaN));//true
console.log(isNaN(10));//false (10是一个数值)
console.log(isNaN('10'));//false (可以转换为数值10)
console.log(isNaN('hello'));//true (不能转换为数值)
console.log(isNaN(true));//false (可以被转换为数值1)
*数值转换:有三个函数可以把非函数转换为数值:
1).Number()
2).parseInt()
3)parseFloat()
**Number():转型函数Number()可以用于任何数据类型。
Number(变量/变量名)
console.log(Number(true))//1
console.log(Number(false))//0
console.log(Number(null))//0
console.log(Number(' '))//0
console.log(Number('123'))//123
console.log(Number(3.14))//3.14
console.log(Number(undefined))//NaN
console.log(Number('11zbf'))//NaN
**parseInt()和parseFloat()这两个函数专门用于吧字符串转换成数值。
parseInt():从第一位起取到整数部分;
console.log(parseInt('123holle'))//123
console.log(parseInt(' '))//NaN (区别:Number(' ') //0)
console.log(parseInt(3.14))//3
console.log(parseInt(' 11zbf'))//11
parseFloat():从第一位起取到小数部分(只识别第一个小数点),只解析十进制数。
console.log(parseFloat('123holle'))//123
console.log(parseFloat(3.14))//3.14
console.log(parseFloat('5.21.22'))//5.20
^ String 字符串类型。
字符串可以由 双引号或单引号表示。
var a = "hello world";
var a = 'hello world';
查看字符串的长度:length属性
var a = 'hello world';
console.log(a.length);//11
查看字符串相应位置的字符。
var a = 'hello world';
console.log(a[1]);//e
注意 :在字符串中的每个元素占据了字符串的位置。第一个元素的索引为0,下一个是索引1,依此类推。字符串的长度是它的元素的数量。
转换字符串的两种方法:
.toString()
数组、布尔值、对象和字符串值都有toString()方法。
但nul和undefined没有。
var a = [1,2,3,4];
console.log(a.toString());
2).String(变量)
强转函数,可以转化任何类型的值。
console.log(String(123));//'123'
console.log(String(3>4));//'false'
console.log(String(3<4));//'true'
console.log(String(null));//'null'
console.log(String(num1));//'undefined'
"+"也可以把某个值转换为字符串,也可以拼接多个字符串。
var a = 11 + ' ';//'11'
var b = 'hello' + 'world';//'hello world'
^ Object --类型:ECMAScript中的对象其实就是一组数据和功能的集合。
var a = {};//对象字面量方法创建
var a = new Object();//构造函数方法创建