js数据类型/数据类型判断/数据类型强制转换_njj0719的博客-爱代码爱编程
数据类型
数据类型就是字面量的类型
在JS中有六种数据类型:
String 字符串
Number 数值
Boolean 布尔值
Null 空值
Undefined 未定义
Object 对象
Symbol 唯一
其中String,Number,Boolean,Null,Undefined,为基本数据类型,Object为引用数据类型。
1.String字符串
在JS中使用字符串需要使用引号引起来
JS同时支持双引号和单引号
双引号和单引号自己不能嵌套自己,但是双引号和单引号可以互相嵌套
var str = 'hello' console.log(str);
在字符串中可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义
str = '我说:\'hello\''; /*我说'hello'*/
\n 换行 \t 制表符
2.Number数字类型
在JS中所有数值都是Number类型,包括整数和浮点数
var a = 123; var b = 456.123 console.log(a,b)
JS中数字的最大/小值,当使用的数字超过了Number表示的数字超过了最大值,则会返回一个Infinity(正无穷大)
console.log(Number.MAX_VALUE) /*1.7976931348623157e+308*/ console.log(Number.MIN_VALUE)/*最小的正值*/ /*5e-324*/ console.log(Number.MAX_VALUE*Number.MAX_VALUE) /*Infinity*/
非数字运算,会返回一个特殊数字NaN,表示Not A Number
var a = abc*efd console.log(a) /*NaN*/
使用typeof检查NaN,Infinity的值,会返回number
var a = NaN var b = Infinity console.log(typeof a,typeof b) /*number number*/
如果使用JS进行浮点数运算,可能得到一个不精确的结果
不可以使用JS进行精确度很高的运算
3.Boolean布尔值
布尔值只有两个(true/false),主要用作逻辑判断
4.Null/Undefined
null专门用来表示为空的对象
使用typeof检查null时,会返回object;
当声明一个变量却不给其赋值时,其值就会等于undefined
使用typeof检查undefined时,返回undefined
5.对象Object(引用)
对象是一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性。如果我们使用基本数据类型的数据,我们所创建的变量都是独立的,不能成为一个整体,要想数据之间建立联系就要使用到对象。
Array
一种特别的对象,有数值下标
Function
一种特别的对象,内部是可执行的代码
对象的分类
1.内建对象
由ES标准中定义的对象,在任何的ES的实现中都可以使用
eg:Math,String,Function
2.宿主对象
由JS的运行环境提供的对象,主要是浏览器提供的,如BOM,DOM
3.自定义对象
由开发人员自己创建的对象
自定义对象的创建
1.创建对象
使用new关键字,通过构造函数constructor,构造函数是专门用来创建对象的,使用typeof检查对象时,会返回object
var obj = new Object();
2.对象操作
在对象中保存的值称之为属性
对象.属性 = 属性值
obj.name = '亚索'
查询对象属性 对象.属性
console.log(obj.name)
修改对象属性 对象.属性=新值
obj.name = 'tom'
删除对象属性 delete 对象.属性
delete obj.name
数据类型判断
1.数据类型判断方法
1.typeof
用来检查一个变量的类型
返回数据类型的字符串表达
可以判断undefined,数字类型,布尔类型,字符串,不能判断obj和null,也不能判断array与object
null作为一个基本数据类型为什么会被typeof运算符识别为object类型呢? 这是因为javascript中不同对象在底层都表示为二进制,而javascript 中会把二进制前三位都为0的判断为object类型,而null的二进制表示全都是0,自然前三位也是0,所以执行typeof时会返回object
console.log(typeof a)
2.instanceof
判断对象的具体类型,返回一个布尔值
var a = b1 insanceof Object
3.===
可以判断undefined,null,其他都不能判断
因为undefined和null都只有一个值
2.强制数据类型转换
将其它数据类型转化为Number,String,Boolean
1.强制装换为String
方法一
调用其他数据类型的toString()方法
该方法不会改变原变量,他会将转换的结果返回
null与undefined没有toString方法,调用会报错
var a = 123; var b = a.toString(); console.log(a) console.log(typeof a) console.log(b) console.log(typeof b) /* 123 number 123 string */
方法二
调用String()函数,并将要转换的变量作为参数传回函数
该方法不会改变原变量,他会将转换的结果返回
此方法可以转换null和undefined
var a = null; var b = undefined; a = String(a); b = String(b); console.log(a); console.log(b); /* string string */
2.强制转换为Number类型
方法一
使用Number()函数
使用方法同String()函数
ps:使用Number转换时,转换项中如果为纯数字,则转换为数字,如果有任何非数字项,则转换为NaN,转换空串或者都为空格的串,则转换为0,布尔类型进行转换时,false为0,true为1,null转换为0,undefined为NaN
var a = "123" var b = 'abc' var c = '' var d = false a = Number(a); b = Number(b); c = Number(c); c = Number(d); console.log(typeof a); console.log(a) console.log(typeof b); console.log(b) console.log(typeof c); console.log(c) console.log(typeof d); console.log(d) /* number 123 number NaN number 0 number 0 */
方法二
调用parseInt()函数
parseInt可以将字符串中有效的整数取出来,然后转换为Number(只转换到第一个非数字之前)
parseFloat()同上,不过可以取小数
var a = '123x456' var b = '123.456' a = parseInt(a); /*b = parseInt(b) 123 */ b = parseFloat(b); console.log(typeof a); console.log(a); console.log(typeof b); console.log(b); /* number 123 number 123.456 */
3.强制转换为Boolean类型
使用Boolean()函数
1.数字——>Boolean
除了0和NaN,其余都为true
2.字符串——>Boolean
除了空串,其余都为true
3.null/undefined
null/undefined转换为false
4.对象转换也为true
数据类型的几个问题
1.undefined和null的区别
undefined代表定义但是未赋值
null定义了并赋值了,只是值为null
2.什么时候给变量赋值为null?
初始值设为null,表示将要赋值为对象
最后将变量设为null是为了释放内存,让变量的指向变为垃圾对象(被垃圾回收器回收)
3.严格区别变量类型与数据类型?
数据类型:基本类型与对象类型
变量类型(变量内存值得类型):
基本类型:保存的就是基本类型的数据
引用类型:保存的是地址值