JS数据类型详解

Undefined类型

该类型只有一个值就是undefined

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

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

Boolean类型(类class)

这个类型有两个值 true false

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

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

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

0、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

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  Number  Boolean 包装类

 ASCII

A   65  a   97  0   48

Z   90  z  122    9   57

创建String类型的两种方式

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

2、new运算符的形式

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

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

length属性:返回字符串的长度

String的常见方法:

1、charAt(index); 返回指定索引位置的字符,index:索引值

2、charCodeAt(); 返回指定索引位置的字符的ASCII码值

console.log(str.charCodeAt(3));

3、字符串的合并(可以通过加号运算符来进行替代)

concat(str1,str2...)

var str = "welcome to my blog!good good study!day day up!";
var str1 = "you can you up";
console.log(str.concat(str1));

扩充:+号运算符也可以作为字符串的连接运算符

字符串的两个查找位置的方法:

indexof(str, [start]); 查找指定字符(字符串)在目标字符串中出现的首个位置的索引值(此方法接受第二个参数,表明从哪一个位置开始进行查找)

lastIndexof(str, [start]); 查找指定字符(字符串)在目标字符串中出现的首个位置的索引值(从后往前找)

这两个方法有一个共同的特性:就是没有找到匹配的则返回-1

String其他方法

search(字符) 查找字符是否出现,返回的是查找到的字符出现的位置(支持正则表达式)

用来截取字符串

1、slice(start, end) 该方法操作过后的字符串不会发生改变

  start:截取的起始位置的索引值

  end:结束位置的索引值

  该方法包含起始位置不包含结束位置

  当只传递一个参数的时候,默认截取到字符串的结束位置

  一个参数都没有,截取全部字符

  该方法可以传递负数:计算规则 索引值 = 负数 + 字符串长度

  当第一个参数比第二个参数要大的时候,返回"";

2、substring(start, end) 该方法操作过后的原字符串不会发生改变

  start:截取的起始位置的索引值

  end:结束位置的索引值

  包含开始不包含结束

  传递一个参数,默认截取到末尾  str.substring(1)

  一个参数不传,默认截取全部

  当第一个参数比第二个参数要大的时候,会自动调整两个参数的位置(将小的放在前面,大的放在后面)

  在传递负数的时候,此方法会将负数变成0

3、substr(start, 截取的长度) 从起始位置开始,截取指定长度的字符串,原字符串没有发生改变

  start:截取的起始位置的索引值

  第二个参数:要截取的长度

  当一个参数都没有的时候,默认截取全部字符串

  当只有一个参数,默认从起始位置到结束位置

  该方法支持负数的写法

  计算规则 索引值 = 负数 + 字符串长度

总结:一个参数都不传,这三个方法默认都截取全部字符串

  传递一个参数,都是从起始位置截取到结束位置

  截取过后的原字符串都不会发生改变

字符串的拆分:

split(规则):将一个字符串按照一定的规则拆分成为数组

规则可以是子字符串,也可以通常与数组的join方法来实现互相的转换

字符串的替换:

replace(被替换的字符, 用来替换的字符)

可以接受正则表达式

str.replace('o', '欧')

默认只能替换第一个

如果想实现全部替换,需要借助正则表达式来进行使用

str.replace(/o/g, '欧') g代表全局匹配

toLowerCase(); 将字符串转化为小写格式,并且返回一个新的字符串,原字符串没有发生改变

toUpperCase(); 将字符串转化为大写格式,并且返回一个新的字符串,原字符串没有发生改变

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
}
原文地址:https://www.cnblogs.com/crazier/p/12642640.html