搞过前台开发的都知道,在js里面,true和false的定义和其它语言不太一样.大部分的变量都代表true,只有少部分被判断为false,包括0,-0,null,"",false,undefined,NaN,除了0不怎么好理解,其它值被转化为false还是可以理解的.
JS的这个特性用起来还真不习惯,不过它带来的好处也是有的,下面就是我写这文章的目的了.请看下面代码:
var NREUMQ=NREUMQ||[];
NREUMQ.push(["mark","firstbyte",new Date().getTime()]);
第一行定义一个数组,第二行push值.
NREUMQ||[] : 这个写法是要判断变量NREUMQ是否已定义,不存在就返回一个数组,存在就返回变量本身.
JS中的"||"用法要是不清楚,大家百度下,这里只告诉大家,js中||和&&返回的不是true和false,而是表达式中正在判断的变量本身(这里只能牵强的理解为变量本身在做判断的时候又会转换为true和false,所以JS就直接返回变量本身了).
我就是没写上面这句话,直接赋值,导致了程序异常,血和泪的交融啊!