js的类型 - js五种基本数据类型

抒情君 5

js中有六大数据类型,包括五种基本数据类型number、boolean、null、undefiined、string和混合数据类型object

我们可以用typeof操作符来检测变量的数据类型(输出的是一个关于数据类型的字符串)

var a=1;
console.log(typeof a);//number
var b="hello";
console.log(typeof b);//string
var c=true;
console.log(typeof c);//boolean
var d=null;
console.log(typeof d);//object(null是空对象引用或者说是指针)
var e=undefined;
console.log(typeof e);//undefined
var f=function(){
document.write("hello world");
};
console.log(typeof f);//function
var g=[1,2,3];
console.log(typeof g);//object

以上代码中,null进行typeof操作符后,结果是object,是因为null被当做一个空对象引用。

1、string类型

在string类型中,单引号和双引号的作用效果完全一;

string类型有length属性,可以获取字符串的长度。var str = hello;console.log(str.length);//5

string类型的值是不可变的,要改变一个字符串的值,首先要销毁原来的字符串,然再用另一个包含新值的字符串填充该字符串

var lang="java";
lang ="script";
console.log(lang);//javascript

上面这段代码。先创建一个长度为10的字符串,然后把java和script填充进去,得到javascript,最后销毁java和script,这个过程发生在后台

字符串转换:转型函数String()适用于任何数据类型(null、defined转换后为null和defined),toString()方法(null和defined没有toString()方法)

2、number类型

number类型包含整数和浮点型(浮点型数值必须包含一个小数点且小数点后至少有一位数字)

可以用一个值-0来将其转换成一个数字

浮点数会自动转换为整数

var a = 1.00;
console.log(a);//1
var b=0.1,c=0.2;
console.log(b c);//0.30000000000000004

这里出现出现0.1 0.2不等于0.3的原因是十进制到二进制的转换导致的精度问题。使用了IEEE754浮点数格式来存储浮点类型(float 32,double 64)的任何编程语言都有这个问题。

NaN:非数字类型 特点:1、涉及到任何关于NaN的操作,都会返回NaN 2、与自身不相等

isNaN()用来确定一个值是否为NaN 若isNaN()的参数不是number类型,isNaN()首先会尝试将该参数转换为数值类型,然后对转换后的结果是否为NaN进行判断。空字符串和布尔值可以强制转换为数值类型0或1,所以返回false

isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
//前端全栈开发圈:866109386
isNaN(true); // false
isNaN(null); // false
isNaN(37); // false
// strings
isNaN("37"); // false: 可以被转换成数值37
isNaN("37.37"); // false: 可以被转换成数值37.37
isNaN("37,5"); // true
isNaN(123ABC); // true: parseInt("123ABC")的结果是 123, 但是Number("123ABC")结果是 NaN
isNaN(""); // false: 空字符串被转换成0
isNaN(" "); // false: 包含空格的字符串被转换成0
// dates
isNaN(new Date()); // false
isNaN(new Date().toString()); // true
isNaN("blabla") // true: "blabla"不能转换成数值
// 转换成数值失败, 返回NaN

Number()转型函数,可以用于任何数据类型;

parseInt(),将值转换为整型,用的比较多;

parseFloat();将值转换为浮点型。

后面两者只能 用于字符串

3、Boolean类型

该类型只有两个值,true和false

Boolean():将某个值转换为Boolean类型。

如果逻辑对象无初始值或值为0、-0、false、undefined、null、""、NaN,那么对象的值为false,否者其值都为true(即使当自变量的值为字符串false时);

console.log(Boolean(0));//false
console.log(Boolean(NaN));//false
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean("false"));//true

4、null类型

null是一个对象,但是为空,所以typeof null的时候,结果为object

null在参与数值运算的时候会自动转换为0参与运算

如果定义的变量用来保存对象,最好将该变量初始化为null

实际上undefined值是派生自null值的,所以undefined==null

类型转换:

Boolean(null)//false

Number(null) //0

String(null) //null

注意:

null是空对象指针,{}是空对象,[]是空数组,三者不一样。

null不能添加自定义属性

5、undefined类型

只有一个值即undefined,使用了var声明变量,但未给变量初始化值,那么这个变量的值就是undefined。

var a="hello world";
var b;
console.log(typeof a);//string
console.log(typeof b);//undifined

出现场景:

1、已声明未赋值的变量

2、获取对象不存在的属性

3、无返回值的函数的执行结果

4、函数的参数没有传入

类型转换:

Boolean(undefined)//false

Number(undefined) //NaN

String(undefined)//undefined

6、object类型

object 属于引用数据类型

对象是带有属性和方法的特殊数据类型

js中的所有事物都是对象:字符串,数组,函数等。js也允许自定义对象。暂不多介绍

对前端的技术,架构技术感兴趣的同学关注我的头条号,并在后台私信发送关键字:前端即可获取免费的架构师学习资料

知识体系已整理好,欢迎免费领取。还有面试视频分享可以免费获取。关注我,可以获得没有的架构经验哦!!

上一篇:

下一篇:

  推荐阅读

分享