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 }