JS数据类型详解

Undefined类型

该类型只有一个值就是undefined

在定义一个变量的时候没有赋初值,默认就是undefined

var box = undefined; //该操作没有任何意义

Boolean类型(类class)

这个类型有两个值 true false

逻辑运算:等于(==)、全等(===)、不等于(!=)、取反(!)

在JS中,==表示比较(只相等就可以,可以是转换之后的值),=表示赋值,===表示全等判断(表明了值以及类型都必须相等)

Boolean() 用来进行数据类型的转换,将其他数据类型转换为Boolean类型

NaN、""、null、undefined是可以直接转换为false的(自身可以转换)

 

Number类型

 

该数值中必须包含一个小数点,并且小数点后面必须至少有一位非零数字

var box = 7.8;

var box = .8; //不推荐大家使用,可读性不强

var box = 3.0; //对于这样的数,js底层会进行判断,会自动转换为整型

//(原因:因为浮点型存储空间是整型的两倍,节省内存空间)

JS在做运算时不严谨

console.log((0.1 * 10 + 0.2 * 10) / 10);    //0.3
console.log(0.1 + 0.2 == 0.3);    //false   0.1 + 0.2 = 0.30000000000000004

toFixed(n) 保留n位有效数字,返回一个字符串

将数值调用toString()转换为字符串(能够进行四舍五入)

 

NaN:表示一个本来要返回数字类型的值,但是没有正确的返回数字类型

12/0(java中会报错)

0/0 isNaN() 是在window中存在的一个方法,会有数据类型的转换

 

Number转型函数有三个:Number()、parseInt()、parseFloat()

Number(); 用于任何数据类型转换成数值

parseInt(); 从左往右寻找能认识的数字,找到一个不认识的就停止,返回之前认识的(如果最开始就不认识则返回NaN),不认识小数点

parseFloat(); 比parseInt多认识一个小数点

 

转型为Number有三个方法:

1、Number() 适用于任意数据类型的转换

2、parseInt()、parseFloat() 适用于字符串的转换

 

Number(n) 将n强制的转换为数值型

var box = "25x";
console.log(Number(box));    //NaN

 

true → 1  false → 0

var box = null;    //先将null转换为false,然后变为0
var box = undefined;    //NaN
var box = "";    //0

对于对象转数值:首先调用valueof(),如果没有然后再调用toString();

 

String类型

 

创建String类型的两种方式

 

1、字面量的形式(推荐大家使用)

 

2、new运算符的形式

var box = "king";
var box1 = new String("king");

String.prototype 可以用来查看String类型的原型对象上所有的方法和属性,任何字符串都可以使用String类型的所有方法和属性

 

Object类型

js中万物皆对象

类是对象的具体细分,实例是类的具体表现

创建对象有三种方式

1、字面量的形式

var box = {};

2、new运算符的形式

var box = new Object();

3、Object,create({}) //不常用

var obj = {
    name:"king"
};
var box = Object.create(obj);

对象中可以包含任意的数据类型

 

key: value 一 一对应的

key:属性名

value:属性值

每一个键值对之间都是以逗号进行分割的,最后一个不需要任何的标点符号

一个对象中属性名不能重复

 

对象两种获取值的方式

1、通过 . 运算符 点运算符后面接的都是确定的属性名

parent.job = “程序猿”

2、通过[ ] 中括号里面可以是一个字面量,也可以是一个变量名

var wg = "weight";
parent[wg] = "70kg";
parent['weight'] = "70kg";

如果没有对应的属性,获取值会的得到一个undefined

在进行parent.job = "程序猿";操作时,如果原本对象中存在job属性则是对该属性的重新赋值,如果没有该属性就是新增该属性

删除对象上的属性:

delete parent.wg

对象中存在一个遍历的循环

for (当前循环到的属性名 in 对象名)

实现:

for (var item in parent) {
    // statement
}

 

2021-06-22  10:47:57