1.typeof 返回值:number、string、boolean、object、undefined、function
写法: typeof(a) 或者 typeof a
<script type="text/javascript">
//注意:
var a = [];
console.log(typeof(a)); //object
var b = {};
console.log(typeof(b)); //object
var c = null;
console.log(typeof(c)); //object
var d = undefined;
console.log(typeof(d)); //undefined
var e = function(){};
console.log(typeof(e)); //function
</script>
2.类型转换:显式类型转换、隐式类型转换
(1)显式类型转换
Number():转换为数字
<script type="text/javascript">
var f = "123";
console.log(Number(f)); //123
var g = true;
console.log(Number(g)); //1
var h = false;
console.log(Number(h)); //0
var i = "a";
console.log(Number(i)); //NaN
//null转化成数字类型为0,undefined转化为数组类型为NaN(非数)
</script>
parseInt():转换为整形的数
parseFloat()、String()、Boolean()、toString() 注意:undefined和null没有toString()方法(报错
<script type="text/javascript">
//注意
var j = "b";
console.log(parseInt(j,16)); //11 原因:把j以16进制转换为10进制
var k = 10;
console.log(k.toString(2)); //1010 将k转2进制数
</script>
(2)隐式类型转换(都是调用的显示的方法)
<script type="text/javascript">
//1.isNaN():把括号里面的数先放到Number()里面,返回值跟NaN比较
console.log(isNaN(NaN)); //true
console.log(isNaN("124")); //false
console.log(isNaN("abc")); //true
console.log(isNaN(null)); //false
console.log(isNaN(undefined)); //true
//2.++ -- :Number()
var l = "123";
console.log(++l); //124
var m = "abc";
console.log(++m); //NaN
console.log(typeof(m)); //number 虽然是非数,但是类型是数字
//3.+ - (正、负) :Number()
var n = +"abc";
console.log(n); //NaN
console.log(typeof(n)); //number
//4.+ (加):toString()
//5.- * / % (减、乘、除、摩尔):Number()
//6.&& || !
//7.> < >= <=
//8.== !=
console.log(null == undefined); //true
</script>
3.不发生类型转换:===、!==
<script type="text/javascript">
//注意
console.log(NaN === NaN); //false
console.log(NaN !== NaN); //true
</script>