Chinaunix首页 | 论坛 | 博客
  • 博客访问: 167674
  • 博文数量: 60
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 466
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-08 21:46
个人简介

我是个笨蛋

文章分类

全部博文(60)

文章存档

2015年(22)

2014年(20)

2013年(18)

我的朋友

分类: JavaScript

2014-09-01 16:06:40

在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为true
a && b : 将a, b转换为Boolean类型, 再执行逻辑与, true返回b, false返回a

a || b : 将a, b转换为Boolean类型, 再执行逻辑或, true返回a, false返回b

几乎所有语言中||和&&都遵循“短路”原理,如&&中第一个表达式为假就不会去处理第二个表达式,而||正好相反。
js也遵循上述原则。
当||时,找到为true的分项就停止处理,并返回该分项的值,否则执行完,并返回最后分项的值。
当&&时,找到为false的分项就停止处理,并返回该分项的值,否则执行完,并返回最后分项的值

var attr = attr || “”;
这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用。


if(!!attr),为什么不直接写if(attr)
其实这是一种更严谨的写法: 
请测试 typeof 5和typeof !!5的区别。!!的作用是把一个其他类型的变量转成的bool类型。 

js精简代码
if(a >=5){ 
alert("你好"); 

可以写成: 
a >= 5 && alert("你好"); 
这样只需一行代码就搞定。但是需要注意的一点就是:
js中||和&&的特性帮我们精简了代码的同时,也带来了代码可读性的降低。这就需要我们自己来权衡了。 

一方面精简js代码,能实质性的减少网络流量,尤其是大量应用的js公用库。
个人比较推荐的做法是:如果是相对复杂的应用,请适当地写一些注释。这个和正在表达式一样,能够精简代码,但是可读性会降低,对读代码的人要求会高些,最好的办法就是写注释。 
阅读(540) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~