typeof 操作符
typeof 能返回的六种数据类型(区分数字类型)
number、string、boolean、undefined、object、function
例
var num = 123;
console.log(typeof(num)); //返回 number
写成 console.log(typeof num );也可以不过最好加括号
例
var num = {};
console.log(typeof(num));//返回 object
例
var num = [] ;
console.log(typeof(num)); //返回 object
例
var num = null;
console.log(typeof(num)); // 返回 object,null最 早是代替空对象的
例
var num = undefined;
console.log(typeof(num)); //返回 undefined
例
var num = fuction(){};
console.log(typeof(num)); // 返回 function
类型转换
例
var num = 1 +"1";
console.log(typeof(num) + ":" + num); //number:11
例
var num = 1 *"1";
console.log(typeof(num) + ":" + num); // number:1
例
var num = 1 -"1";
console.log(typeof(num) + ":" + num); // number:0
例
var num = "2" -"1";
console.log(typeof(num) + ":" + num); // number:1
例
var num = "2" *"1";
console.log(typeof(num) + ":"+ num); // number:2
显示类型转换
Number(mix) 是想把里面的东西转换成数字
例
var num = Number("123");
console.log(typeof(num) + ":" + num);// Number:123,把字符串类型的 123 转换成了 number 类型
例
var demo = "123";
var num = Number(demo);
console.log(typeof(num) + ":" + num); // Number:123,上面那一行的 Number 是为了把()里面转换成数字类型
例
var demo = true;
var num = Number(demo);
console.log(typeof(num) + ":" + num); // Number:1
例
var demo = false;
var num = Number(demo);
console.log(typeof(num) + ":" + num);// Number:0
例
var demo = null;
var num = Number(demo);
console.log(typeof(num) + ":" + num); // Number:0
例
var demo = undefined;
var num = Number(demo);
console.log(typeof(num) + ":" + num);// Number:NaN
例
var demo = "abc";
var num = Number(demo);
console.log(typeof(num) + ":" + num); // Number:NaN
例
var demo = "-123";
var num = Number(demo);
console.log(typeof(num) + ":" + num); // Number:-123
例
var demo = "123abc";
var num = Number(demo);
console.log(typeof(num) + ":" + num); // Number:NaN
parseInt(string,radix)
parse 是转化,Int是整型,整数,目的是把里面转换成整数
例
var demo ="123";
var num = parseInt(demo);
console.log(typeof(num) + ":" + num); // number:123
例
var demo = true;
var num = parseInt(demo);
console.log(typeof(num) + ":" + num); //number: NaN
例
var demo = false;
var num = parseInt(demo);
console.log(typeof(num) + ":" + num); // number: NaN
例
var demo = 123.9;
var num = parseInt(demo);
console.log(typeof(num) + ":" + num); // number: 123,此处是直接去掉小数,不是四舍五入
例
var demo = "10";
var num = parseInt(demo ,16);
console.log(typeof(num) + ":" + num); // number: 16
var num = parseInt(demo ,radix);
//radix 是基底的意思 radix 写成 16,系统会认为是以 16 进制为基底, 10(一零)是 16 进制的一零,是 以 16进制为基底,把他转成为 10 进制的数字(就是16),上面是以目标进制为基底, 转换成十进制(radix范围是 2-36)
例
var demo = "3";
var num = parseInt(demo ,2);
console.log(typeof(num) + ":" + um);// number: NaN
例
var demo = "b";
var num = parseInt(demo ,16);
console.log(typeof(num) + ":" + num); // number: 11
例
var demo = "123abc";
var num = parseInt(demo);
console.log(typeof(num) + ":" + num); // number: 123
例
var demo = "100px";
var num = parseInt(demo);
console.log(typeof(num) + ":" + num);//number: 100
parseInt从数字类开始看,看到非数字类为止,返回原来的数
parseFloat(string)
parseFloat(string)转换成浮点数字,就是正常小数
例
var demo = "100.2";
var num = parseFloat (demo);
console.log(typeof(num) + ":"+ num); // number: 100.2
例
var demo = "100.2.3";
var num = parseFloat (demo);
console.log(typeof(num) + “:” + num); // number: 100.2
例
var demo = "100.2abc";
var num = parseFloat (demo);
console.log(typeof(num) + ":" + num); // number: 100.2
parseFloat 从数字类开始看,看到除了第一个点以外的非数字类为截止,返回前面的数
toString
例
var demo = 123;
var num = demo.toString();
console.log(typeof(num) + ":" + num); 答案显示 string: 123。
相当于把 123 转换字符串,想把谁转换成字符串,就写成谁.toString
例
var demo = undefined;
var num = demo.toString();
console.log(typeof(num) + ":" + num); //报错,undefined和 null 不能用 toString
例
var demo = 123;
var num = demo.toString(8);
console.log(typeof(num) + ":" + num); //173,
把 123 转成为八进制 这里的 radix意思是以十进制为基底,转换成目标进制(即 8进制)
例
var demo = 10;
var num = demo.toString(8);
console.log(typeof(num) + ":" + num); //12
例
var demo = 20;
var num = demo.toString(8);
console.log(typeof(num) + ":" + num); // 24
以十进制为基底,把 20 转换成8 进制,就是 24
例给你一个二进制的数,转换成十六进制,是先从二进制到十进制再到十六进制
var num = 10101010;
var test = parseInt(num, 2);
console.log(test.toString(16)); //答案 aa
例
var num = 10000;
var test = parseInt(num, 2);
console.log(test.toString(16)); //答案 10
String(mix)
String(mix)转换成字符串,写什么都成了字符串
例
var demo = 123.234;
var num = String (demo);
console.log(typeof(num) + ":" + num); // string: 123.234
例
var demo = undefined;
var num = String (demo);
console.log(typeof(num) + ":" + num); // string: undefined
Boolean()
Boolean()转换成布尔值false 和 true
例
var demo = “”;
var num = String (demo);
console.log(typeof(num) + ":" + num); // boolean: false
隐式类型转换
隐式类型转换内部隐式调用的是显示的方法 隐式类型转换包括 isNaN () ,++,–, +/-(一元正负),+,*,% ,, &&,|| ,!, <,>,<= ,>= ,== ,!=
isNaN ();
isNaN ();当你把一个数放到()里,它能判断是不是NaN,先比括号里面的放到 number 里面转换,然后返回来
例
console.log(isNaN(NaN); //答案 true
例
console.log(isNaN("123"); //答案 false
例
`console.log(isNaN(“abc”); //答案 true`。
会调用 number,先把“abc” 放 number 里面转换,通过 number 的转换再和NaN 比对,如果相等就是 true
例
console.log(isNaN(null); //答案 false,在 number 里面放 null是 0,不是 NaN
例
console.log(isNaN(undefined); //答案 true
++/–(加加减减) +/-(一元正负)
例
var a = "123";
a ++; // 124,++这个符号放到这里,还没运算之前,先把前面的 a 转换成number 的 123
例
var a = “abc”;
a ++; //NaN
+/-(一元正负) +a;-a;正 a 和负 a都会变换成数字
例
var a =+"abc";
console.log(a + ":" + typeof(a)); //NaN:number。尽管转换不成数字,也会转换成数字类型,因为里面隐式的调用 了一个 number
+
+隐式类型会转换成 string,当加号两侧有一个是字符串,就用调用 string,把两个都 变成字符串
例
var a = "a" +1
console.log(a + ":" + typeof(a));//a1:string
% *和% 乘和模都会转换成 number.
例
var a = "1" *1;
console.log(a + ":" + typeof(a)); // 1:number
例
var a = "a" *1;
console.log(a + ":" + typeof(a)); // 1:number,先是 number(“a”)的结果乘以 number(1)的结果,最后是 NaN*1, 还是NaN,但是数据类型是 number
&& || !
与或非,都是有类型转换的,不过是返回的是表达式的值,不是隐士类型转换的值, 但是判断是一个类型转换的值
< > <= >=
例
var a =1 > "2";
console.log(a + ":" + typeof(a)); // false:boolean,有数字相比较的,就会隐士类型转换成数字类型
例
var a ="3" > "2";
console.log(a + ":" + typeof(a)); //true:boolean
var a ="3" > 2;
console.log(a + ":" + typeof(a)); // true:boolean 会转换成数字,因为数字优先
== !=
例
var a = 1 == "1";
console.log(a + ":" + typeof(a)); //true:boolean,隐士类型转换
var a = 1 == true;
console.log(a + “:” + typeof(a)); //true:boolean
例 false>true //答案 false,会先转换成数字,0>1当然是错的
例 2>1>3 //答案 false
例 2>3<1 //答案 true
例 10>100>0 //答案 false
例 100>10>0 //答案 true 以上都是挨个算的,先看前面的是 true 还是 false,再和后面的比,不是顺着下来
例 undefined>0 //答案 false
例 undefined0 //答案 false
例 undefined<0 //答案 false
例 null>0 //答案 false
例 null0 //答案 false
例 null<0 //答案 false
例 undefined == null //答案 true
例 NaN ==NaN //答案 false,NaN 是唯一一个连自己都不等于的
不发生类型转换
绝对等于(三个等号)
!绝对不等于
例 1 === 1 //答案 true
例 1 === “1” //答案 false
例 1 ! “1” //答案 true
例 1 !== 1 //答案 false
例 NaN =NaN //答案 false
例 console.log(a); //如果定量没定义就直接访问, a is not defined报错; 有一种特殊情况,当且仅当把未定义的变量放到 console.log(typeof(a));里面就访问, 不报错,返回 undefined
例
console.log(typeof(a)); //答案 undefined,这个 undefined是字符串
例 console.log(typeof(typeof(a))); //答案 string。console.log(typeof(typeof(a))); 可以先解析成 console.log(typeof(“undefined”));再返回一次就是 string 字符串。 上面考的是 typeof(a)返回的六种类型的值(number、string、boolean、undefined、 object、function)都是 undefined 字符串