一、,操作符
var a,b=0; console.log(a);//undefined console.log(b);//0
,逗号操作符的左到右计算它的操作数,只返回最后一个操作数的值;
逗号表达式是连续表达式,他的结果是最后一个值
二、parseInt 传入数字
为什么会是如下这样:
parseInt(0.000008) // >> 0 parseInt(0.0000008) // >> 8
parseInt(arg)
时会先调用arg.toString()
。
(0.000008).toString() // "0.000008"
(0.0000008).toString() // "8e-7"
parseInt("0.000008");//0
parseInt("8e-7");//8
三、立即执行表达式
(function (){} ());//括号里面必须是表达式
(function (){} )();
[function (){} ()] //[] 等价于 ()
//下列符号后也必须是表达式
~function (){} ();
!function (){} ();
+function (){} ();
-function (){} ();
delete function (){} ();
typeof function (){} ();
void function(){} ();
var f=function (){} ();
1,function (){} (); //,后面必须是表达式
1 ^ function (){} ();
1 > function (){} ();
四、类型
typeof false //"boolean" typeof .2//"number" typeof NaN //"number" typeof '';//"string" typeof undefined //"undefined" typeof Symbol();//"symbol" typeof new Date();//"object" typeof [] //"object" typeof alert //"function" typeof null //"object"
五、实现浮点数转整数,或者说取出数字的整数部分
function converInt(num){ return num >> 0; }
convertToInt(-Math.PI); // -3
convertToInt(12.921); // 12
符号右移会将左操作数转换为32位整数
num | 0
也是可以的
六、一个this的问题
function djw(){ console.log(this); } djw(); // Window djw.call(null/undefined); // Number 特殊情况因为'/' djw.call(null);//window djw.call(undefined);//window djw.call(1); // Number function djw(){ 'use strict'; console.log(this); } djw(); // undefined djw.call(null/undefined); // NaN djw.call(null);//null djw.call(undefined);//undefined djw.call(1); // 1非严格模式下,this默认指向全局对象window,call或apply显式指定this参数时也会强制转换参数为对象(如果不是对象)。其中,null/undefined被替换为全局对象,基础类型被转换为包装对象。
严格模式下,this 默认为undefined,且call或apply显式指定this参数时也不会有强制转换
七、给基础类型添加属性无效
var num =0; num.prop=1; console.log(num.prop);
num.prop 等同于 Object(num).prop,也就是说我们添加属性到一个新建的对象上,与num没任何关系。