例1:用于赋值
&&:从左往右依次判断,当当前值为true则继续,为false则返回此值(是返回未转换为布尔值时的原值哦)
|| : 从左往右依次判断,当当前值为false则继续,为true则返回此值(是返回未转换为布尔值时的原值哦)

var attr = attr || “”;这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用。因为js不像php可以直接在型参数上定义func($attr=5)。再次提醒你记住上面的原则:如果实参需要是0、""、null、false、undefined、NaN的时候也会当false来处理。

var attr = attr || "";的理解  if(attr) {var attr=attr;}else{attr="";}

// => aaa
var attr = true && 4 && "aaa"; // => 0
var attr = true && 0 && "aaa"; // => 100
var attr = 100 || 12; // => e
var attr = "e" || "hahaha" // => hahaha
var attr = "" || "hahaha"

例2 经过多次判断的赋值

/*
x>=15时 => 4
x>=12时 => 3
x>=10时 => 2
x>=5时 => 1
x<5时 => 0
*/
console.log((x>=15 && 4) || (x>=12 && 3) || (x>=10 && 2) || (x>=5 && 1) || 0);

例3 与对象形式的变量合体

/*
x=15 时 => 4
x=12 时 => 3
x=10 时 => 2
x=5 时 => 1
其它 => 0
*/
console.log( {'5':1,'10':2,'12':3,'15':4}[x] || 0 );

例4 用于执行语句

if(a >=5){alert("你好");}
//可以写成:
a >= 5 && alert("你好"); 参考文章:http://www.jb51.net/article/21339.htm
https://segmentfault.com/a/1190000002454280

最新文章

  1. java多线程系类:JUC线程池:02之线程池原理(一)
  2. 【BZOJ】3309: DZY Loves Math
  3. OpenGL基础图形的绘制
  4. Matrix-Tree定理
  5. brew mac osx 上软件包管理工具
  6. C#获取CPU等硬件ID(转载)
  7. 李洪强iOS开发之XMPP
  8. 《University Calculus》-chaper8-无穷序列和无穷级数-泰勒定理的证明
  9. oracle 查询dblink的方法
  10. Android 开发 对话框Dialog dismiss和hide方法的区别
  11. Codeblocks 添加库(undefined reference 错误的处理)
  12. 配置hibernate数据库连接
  13. JS - 删除确认
  14. 关于JAVA Project.waitfor()返回值是1
  15. oracle中的turnc,round,floor,ceil,coalesce函数
  16. InetSim配置使用
  17. linux下内核的配置和编译(2017-1-17)
  18. 有复选框情况下,sql拼写技巧
  19. Python学习--23 内建模块及第三方库
  20. Schema Workbench 启动慢

热门文章

  1. 【BZOJ4238】电压 DFS树
  2. 我们计划为EasyDSS定制开发一款超低延时的EasyPlayer Flash播放器
  3. Coursera公开课Functional Programming Principles in Scala习题解答:Week 2
  4. Google IO 2019 Android 太长不看版
  5. centos或ubuntu下手动安装jdk8
  6. 在Linux下搭建我的世界(Minecraft)服务器
  7. could not read symbols: Archive has no index;
  8. 《CSS权威指南(第三版)》---第一章 CSS和文档
  9. IIS 7.5 虚拟主机独立用户的配置.
  10. haproxy 官方文档查看