undefined类型:表示一个变量仅声明过,但从未赋值。所有未赋值的变量,默认值都是undefined。
undefined类型的值还是undefined!
原始类型大小:
number:整数4字节,浮点数8字节
string:每个字符2字节
数据类型间的转换:
隐式类型转换:程序自动转换数据类型(坑)
弱类型:1.变量声明时不必限定数据类型,今后可能保存任何类型数据
2.数据类型间可以自动类型转换
仅考虑+:只要有字符串参与,一切类型都加“”变为字符串
如果没有字符串,都转为数字计算,其中;true-->1 false-->0
3.String:x.toString()-->将x转为字符串类型
Number:Number(x)-->将任意类型转为Number类型
string-->number:
转为整数:var num = parseInt("str")读取字符串中的整数部分(1).从第一个字符向后读。
(2).如果碰到第一个数字字符,开始获取数字,当再次碰到不是数字的字符(包括.),停止读取
(3 ).如果碰到空格,忽略(4)如果碰到的第一个非空格字符,不是数字,说明不能转---》NaN:Not a Number
console.log(parseInt(" 12px"));//12
console.log(parseInt(" true"));//NaN
console.log(parseInt(" 12.5"));//12
console.log(parseInt(" "));//NaN
parseFloat:读取浮点数部分: var num = parseFloat("str");用法和parseInt相同
区别:parseFloat认识小数点,且只认识第一个小数点
console.log(parseFloat("22.5"));//22.5
console.log(parseFloat("22.5.5"));//22.5
console.log(parseFloat(".5"));//0.5
console.log(parseFloat("22.0"));//22
补充知识:prompt("提示信息"):专门用于请求用户输入数据,收集数据的对话框!var str = prompt("");
*凡是从页面上获得的数据,都是字符串!必须先转换再计算*
算数运算:任意类型数据做减法,都会被转为数字类型,如果有参数不能转为数字,则返回NaN
typeof(x):判断任意数据的类型
console.log(5/0);//Infinity
console.log(typeof(5/0));//number;
console.log(0/0);//NaN
关系运算中:任何类型和数字比较,都转为数字,
console.log("10" == 10);//true
console.log("2" > true);//true
console.log(2 > true);//true
undefined做==比较:undefined类型,从null类型继承来的,undefined值被自动转换为null,所以undefined == null ==>true
===严格相等:不带自动类型转换的相等比较!
console.log(undefined==null);//true
console.log(typeof(undefined));//undefined
console.log(typeof(null));//object
console.log(undefined === null);//false
NaN做==比较:NaN和任何数字做比较,永远返回false NaN==NaN ==>false
isNaN(x):专门用来判断一个数据是否是NaN,如果是NaN返回true;如果不是NaN返回false;
只要不能自动转换为数字的,都返回true;只要能自动转换为数字的,都返回false
console.log(isNaN(""));//false 在关系运算中空字符串自动转为0
console.log(isNaN(22.5));//false;
console.log(isNaN("10"));//false;在关系运算中“10”字符串自动转为数字
console.log(isNaN("12px"));//true
console.log(isNaN(true));//false
console.log(isNaN("true"));//true
console.log(isNaN(NaN));//true
总结:1.普通数据,先转换为相同类型,再比较
2.undefined.就用===
3.NaN,就用isNaN(x)