javascript 是一种即面向过程,又面向对象的语言
typeof 能返回这6种数据类型 number string boolean object undefined function
null -> object (特殊值,必须要记住)
显示类型转换
转换为数字
var num = Number("a");
undefined 转换成数字,显示NaN(非数)
看起来不是数字的就必须不能转换成数字
转换为整型
var num = parseInt(demo);
var demo = "10";
console.log(demo) //输出10
parseInt的另外一种用法:
var num = parseInt(demo, 16); 以目标机底为进制,转换成10进制
说的通俗一点,就是被解析值的进制,转换成10进制
radix 2-36(进制)
parseInt 的第二个功能,从前往后,遇到非数字进行砍断,并提取数字
例如:如下会输出123
var demo = "123abc";
var num = parseInt(demo);
parseFloat:看到除了第一个小数点,的数字进行返回
例如:会输出100.123
var demo = "100.123";
var num = parseFloat(demo);
String不管写什么东西都会转换成字符串
var num = String(demo);
Boolean除了6个特殊值,其他的都会转换成true
undefined null 0 -0 NaN " "(注意最后一个是空字符串,不是空格字符串)
var num = Boolean(demo);
tostring转换为字符串的用法:
注意:有两个东西不能用tostring null与underfind
var demo = 123;
var num = demo.toString();
tostring另外一个用法:
以10进制为机底转换成目标进制的过程
var num = demo.toString(16);
例子:先将2进制10000通过使用parseint转换为10进制
再通过toString,将10进制转为16进制
var num = 10000;
var test = parseInt(num,2);
console.log(test.toString(16));
隐式类型转换
isNaN 通过Number类型转换后进行比对
console.log(isNaN("abc"));
做了以下两个步骤
先将“abc”字符串拿出来,转换为Number
再将转换的Number 与NaN进行比对
所以以上返回结果为true
++/-- 加加和减减
是通过先转换为Number,再进行加减
+/- 正负,也是通过调用Number显示类型转换
+ 加号 ,则是通过调用 string显示类型转换
-*/% 都是通过调用Number显示类型转换
&& || ! 都是通过boolearn显示类型转换
< > <= >=
如果两边都是字符串,则是对比ASC码
如果一边是数字,一边是字符串,则会把字符串,调用Number显示类型转换后,再比大小
== !=
undefined不等于任何数
null 不等于任何数
所以 undefined == null 为true
注意:NaN 什么都不等于,甚至不等于自身 NaN == NaN 为false
有时候在开发时,不需要类型转换,就需要用到如下这两个了
=== 绝对等于
==!绝对不等于
console.log(typeof(typeof(undefined)));
首先是里面的 typeof 将undefined转换为字符串undefined
然后再给外面的typeof
所以会返回string
null是唯一一个特殊值,是对象object