利用JScript中运算符"||"和"&&"的特殊特性实现代码精简
JScript对于逻辑运算的
可是逻辑运算符||和&&虽然遵循上面的定义规则,但是它们返回的值却很有意思。
对于&&运算,按照上面的规则,表达式if("abc"&&"123"&&newDate())是执行true分支,可是这个表达式如果写成:
结果value=FriJan2100:01:17UTC+08002005,原它从左到右检测,如果到了最后一个表达式也是为true的,就返回那个表达式。
对于||运算同理,对于下面的表达式:
结果value1="abc",value2="ok"。这是因为||运算会有"短路"特性,他也是从左向右检测,只不过它是一但发现有为true的值,就立即返回该表达式。
这样的特性可以帮组我们写出精简的代码,可是同时也带来代码不便于阅读维护的问题。
由于我手头暂时没有NS和moz什么的浏览器,不知道标准JavaScript是否也是这样支持的?如果您方便的话,请告如我运行后的结果。
JScript中,这些逻辑运算都是判断一个表达式是否为"有意义的"
例如 0,"",null,false,undefined,NaN..等都是无意义的..
&& 会返回 true 或 false
而 a||b 则是, 如果a是有意义的,则返回a,否则返回b
所以有时候,我不这样写代码:
var obj=QuerySomeObject();
if(obj==null)return null;
return obj.Property;
我会写成
return (QuerySomeObj()||{}).Property;
另外要注意 null 与 false 的比较.
0 "" 等与 false 进行==比较时都是相等的.
但是 null 则不同了. 例如
if(!null)
{
alert(1);
}
if(null==false)
{
alert(2);
}
在Firefox测试过,结果是一样的!
相关文章
- 常问面试题,防抖&节流的解答和实现
- 7 Papers & Radios | 华为配置管理研究获SIGCOMM 2022最佳论文;用即插即用模块改进ViT和卷积模型
- 小样本利器3. 半监督最小熵正则 MinEnt & PseudoLabel代码实现
- 日拱算法:用两个栈实现队列&包含min函数的栈
- 进程&线程
- (StateFlow & ShareFlow) VS (Flow & LiveData)
- 清华&腾讯最新算法Next3D!高质量3D 感知合成,支持3D风格画!论文/代码速递2022.11.24!
- 清华&商汤提出了神经SDF!从多个照明条件下单视图纯阴影或RGB图像重建!论文/代码速递2022.11.29!
- 聊聊损失函数1. 噪声鲁棒损失函数简析 & 代码实现
- CLion 2022 for Mac&win(C和C ++ IDE智能代码编辑器)
- Villain - Windows&Linux后门生成器
- 命令行大全 & docker、containerd、ctr、crictl 的联系
- 7 Papers & Radios | 无残差连接训练深度transformer;DeepMind写代码AI登Science封面
- “回归圆心,探索内增长” 腾讯云TVP两周年&51CTO全球领导力峰会震撼来袭!
- AMP MySQL升级提升数据库性能的必要之举(amp mysql升级)
- AMP与Oracle结合提升数据库性能($amp oracle)
- 把textarea中字符串里含有的回车换行替换成<br>的javascript代码
- 基于Jquery的简单&简陋Tabs插件代码
- js调用图片隐藏&显示实现代码
- 将DataTable转换成List<T>实现思路及示例代码
- 使用远程桌面连接Windows2003&2008服务器详细图文教程