js 实用技巧 短路求值
&&运算符 如果操作有false 则返回false 例如
0&&1 // 返回0
true&&false //返回false
0&&null //返回0
如果所有操作数的值都是 true,将返回最后一个表达式的值。例如
let one = 1, two = 2, three = 3;
console.log(one && two && three); // Result: 3
| | 运算符 操作有true 就返回true 例如
true | | false //返回true
false | | true //返回true 证明不是返回第一个表达式的值哦
如果所有操作数的值都是 false,将返回最后一个表达式的值。例如
0||false //返回 false
false||0 //返回 0
看到这里 可能觉得太简单了吧 谁不会。。。 不过可能工作中确实不知道怎么用吧 下面说几个示例
1.假设我们想要返回一个变量的 length,但又不知道变量的类型 应该怎么搞呢?
我们可以使用 if/else 来检查 foo 是否是一个可接受的类型,但这样会让代码变得很长。这个时候可以使用短路求值:
return (foo | | [ ] ).length
上述代码 如果有length 就返回长度 否则 就返回0
let arr;
(arr | | [ ]).length
//返回 0
arr = [1,2,3,4]
(4) [1, 2, 3, 4]
( arr | | [ ] ).length
//返回4
2.你是否曾经在访问嵌套对象属性时遇到过问题?你可能不知道对象或某个子属性是否存在,所以经常会碰到让你头疼的错误。
假设我们想要访问 this.state 中的一个叫作 data 的属性,但 data 却是 undefined 的。在某些情况下调用 this.state.data 会导致 App 无法运行。为了解决这个问题,我们可以使用条件语句:
if (this.state.data){
return this.state.data;
}else {
return 'Fetching Data';
}
如果使用短路求值 是不是更加简洁一点呢
return ( this.state.data | | 'Fetching Data' )
最新文章
- Daily Scrum Meeting ——EighthDay
- Fzu2124 - 吃豆人 BFS
- nginx 使用
- DataSet 关系
- DTcms 扩展字段标签调用
- HUD 2444 The Accomodation of Students (二分图染色+最大匹配)
- Linux filesystem structures.
- Facebook和Google如何激发工程师的创造力
- HTML与CSS入门——第一章 理解Web的工作方式
- Apache Kafka开发入门指南(2)
- Linux 配置tomcat遇见的若干问题
- 【原创】sqlite ef6 踩坑
- Debian下安装中文包和输入法
- macOS10.14 Mojave无法打开和预览jpg的解决方法
- springboot 后台运行
- CSS中的sprites
- android Toast大全(五种情形)建立属于你自己的Toast
- 【jmeter】jmeter环境搭建
- SPSS学习系列之SPSS Modeler怎么修改默认的内存大小(图文详解)
- VINS(三)IMU预积分
热门文章
- PHPCMS快速建站系列之常用标签
- 集合--Set&;&;HashSet和TreeSet
- Validation异常:No validator could be found for constraint '.....' validating type 'java.lang.Integer'.
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制
- html的select标签清空option!~~~~
- 三 nginx+uWSGI+django+virtualenv+supervisor发布web服务器
- 知识点补充,set集合,深浅copy
- thinkphp 清理runtime缓存的方法, 清理指定目录
- 2018-11-19-win10-uwp-使用-Matrix3DProjection-进行-3d-投影
- 使用openssl 工具进行双向认证测试