类型和类型转换
对象(object)类型
用法:属性值 **:属性名 逗号,**隔开
var deng = {
lastName : "Deng",
age : 40,
sex : undifined,
wife : "zhangsan",
handsome : false
}
取值:对象名 . 属性名, 如:deng.lastName
赋值:deng.lastName = “DengLun”;
获取类型typeof
typeof(demo); 自身返回的值为string类型
typeof(a); --> a 未定义,则返回字符串: undefined
typeof( typeof(a) ); --> 返回字符串:string
两种用法:typeof(变量名) 或者 typeof 变量名
var num = true;
console.log(typeof(num)); // 在控制台显示num的类型,显示结果为boolean
typeof()可以返回六种值:number(数字类型)、string(字符串类型)、boolean(布尔类型)、
object(对象类型)、 undefined、 function(函数类型)
1. typeof()返回object
范范的引用值都会返回object,例如,var num = []; console.log(typeof(num)); --> object
null 也会返回object,例如,var num = null; console.log(typeof(num)); --> object
2. typeof()返回undefined
对于undefined会返回undefined,例如 var num = undefined; console.log(typeof(num)); --> undefined
类型转换
显示类型转换
Number(mix)
var num = Number('123');
console.log(typeof(num)); // 此时num为数字类型的123,控制台显示:number
var num = undefined;
console.log(typeof(num)); // undefined不能被转化成数,所以控制台显示:NaN (非数)
var num = 'a';
console.log(typeof(num)); // a不能被转化成数,所以控制台显示:NaN (非数)
var num = '123a';
console.log(typeof(num)); // 123a不能被转化成数,所以控制台显示:NaN (非数)
parselnt(string,radix)
用法 1 :转成整型
// 用法 1 :parseInt(demo)
var num = '123';
console.log(typeof(num) + " : " + num); // 控制台显示: number : 123
var num = '123.2abc456';
console.log(typeof(num) + " : " + num); // 控制台显示: number : 123 (砍到除小数点的非数字类为止)
var num2 = true; // true 、false、 null 、undefined、'abc'
console.log(typeof(num2) + " : " + num2); // 对于以上测试,控制台都显示: number : NaN
var num3 = 123.7; // 123.3 123.4 123.6 123.9
console.log(typeof(num3) + " : " + num3); // 对于以上测试,控制台都显示: number : 123 (去小数部分)
用法 2 :进制转换
// 用法 2 :parseInt(demo, radix) radix:2~36
var demo = 'b';
var num = parseInt(demo,16); // 把demo当做十六进制看,转化成十进制的数,赋给num
console.log(typeof(num) + " : " + num); // 控制台都显示: number : 11
parseFloat(string)
var num = '123.2abc456';
console.log(typeof(num) + " : " + num); // 控制台显示: number : 123.2 (砍到除第一个小数点的非数字类为止)
toString(radix)
用法 1 :转成字符串
// undefined 和 null 不能用 toString(),会报错
// 用法:
var demo = 123;
var num = demo.toString()
console.log(typeof(num) + " : " + num);
用法 2 :进制转换
var demo = 20;
var num = demo.toString(8); // 以十进制为基底,转化成目标进制(8进制) num = 24(8进制)
String(mix)
// 写什么都会变成字符串,比如undefined也会变成字符串'undefined'
var num = 123; // 123 、 123.1 、abc 、null 、 undefined 、true、hello...
console.log(typeof(num) + " : " + num); // 显示 string : 123
Boolean()
// 转化成true 、 false
隐式类型转换
isNaN()
isNaN(demo) 会把里面的demo通过Number(demo)去转化,将转化后的结果与NaN比对,若相同,则返回true,否则返回false。
isNaN('abc'); --> true
isNan('123'); --> false
isNaN(null); --> false; // Number(null)-->0 --比较NaN-->false
isNaN(undefined); --> true; // Number(undefined)-->NaN --比较NaN-->true
++ 、-- 、正号 + 、负号 -
都会转换成数字再做运算。
var a = '123';
a ++; // a 为number类型,值为:124
var b = 'abc';
b ++; // b 为number类型,值为:NaN
var c = +"abc" ;
console.log(c +" :" + typeof(c) ); // NaN : number
加号+
只要加号两侧有字符串,就在该处当做字符串连接符使用。
减号 -、* 、/ 、%(取余)
Number(demo);
var c = +“abc” ;
console.log(c +" :" + typeof© ); // NaN : number
#### 加号+
只要加号两侧有字符串,就在该处当做字符串连接符使用。
#### 减号 -、* 、/ 、%(取余)
Number(demo);