typeof,类型转换
数组
var arr = [1,2,3,45,5,"abc",undefined];
console.log(arr[0]); //打印第0位
console.log(arr.length); //打印数组的长度
结构体
var arr = {
属性名1 : "字符串", //注意用“,”分隔
属性名2 : 数字,
属性名3 : underfined,
属性名4 : false,
}
console.log(arr.属性名);
编程形式的区别
- 面向过程:机械的想法,逻辑化思维,按步骤进行(c语言)
- 面向对象(java c++)
js即面向过程也面向对象
注:也可以用脚本语言与非脚本语言进行分类
typeof()
用于区别不同的数据类型
用console.log(typeof(变量名));则直接打印变量的数据类型
注:typeof函数中var a = {}; var a= []; var = null;的返回值是object
也可以用typeof 变量名表示typeof函数
类型转换
显式类型转换
- Number(变量); 转化为数字变量
eg:var num = Number(‘123’); //把123转换为数字123,并返回num
var demo = “123”; //另一种形式
var num = Number(demo);
注:布尔值true转为数字为1,false为0;null为0,undefined不能转化,变为为NaN,字母也不能转化,变为NaN
- parseInt(变量);
- parseInt(变量);转化为数字的整形变量(去掉小数点后的数字)
注:可以转换字符串,但布尔值true和false以及其他则转化为NaN - parseInt(变量,数字);以数字为基底转换为10进制
注::“数字”被称为radix,取值范围为2-36;且其运行方式为从数字位开始取值,取到非数字位(小数点,字母等)截止
eg:var demo = “10”;
var num = parseInt(demo,16);
console.log(typeof(num) + " : " + num) //输出值为Number:16
- parseFloat(变量); 转化数字为浮点数
注:当其出现非数字位时,只取非数字位前的数字(小数点除外) - String(变量); 转化为字符串(任意值)
- Boolean(变量); 转化为布尔值(true和false)
注:undefined、null、NaN、""(空串)、0、false 转化的布尔值为false,其余变量均为true - toString();
- 变量名.toString();
eg:var demo = “123”;
var num = demo.toString();
注:undefined与null不能用该函数转化,但可以用String函数解决 - 变量名.toString(数字);以10为基底转化为数字目标进制
eg:var demo = “10”;
var num = demo.toString(8);
console.log(typeof(num) + " : " + num) //输出值为Number:16
隐式类型转换
- isNaN(变量); //判断变量是不是NaN,返回布尔值
注:把变量用Number();函数进行转换,将转化结果与NaN进行比较 - “++”,“–”,“+”,“-” (最后两个是一元正负运算符)
注:
- 把变量用Number();函数进行转换再进行计算;
- “+”两侧有一个是字符串,则会把非字符串部分链接到字符串部分上
- “*”,“/”,“%”
注:把两侧用Number();进行转换,并对转换结果进行计算 - “&&”,“||”
注:把两侧变量用Boolean();进行转换,并对转换结果进行运算,但返回的值却是变量的值 - “>=”,“<=”
注:有数字则用Number();函数转化后进行比较 ;字符串则是用ASCII进行比较,且可以连续比较
eg:2 > 1 > 3(返回值为false);3 > 2 > 1(返回值为true) - “”,“!=”
注:undefined == null 他们两个不等于其他值
“=”,“!==”是不发生类型转换的绝对不等于
注:NaN != NaN ; NaN !== NaN
未定义的变量如果出现在函数中,只有typeof();函数有返回值不报错,且这种情况下返回值为undefined
变量.toFixed(数字);
其用法为,将变量的小数点后“数字”位作为标准,余下部分四舍五入
var num = 123.45678;
var demo = num.toFixed(3);
var demo == 123.457;