javascript a=a||"" 表达式
其实:
a=a||"defaultValue";
与:
if(!a){
a="defaultValue";
}
和:
if(a==null||a==""||a==undefined){
a="defaultValue";
}
是等价的! 为了弄清这个问题,首先我们必须了解一个问题:javascript中数据类型在转换为bool类型时发生了什么。
在javascript中,数据类型可以分为“真值”和“假值”。顾名思义,真值转换为bool时值为true;假值转换为bool时值为false。下表罗列了一些常见的数据类型转换为bool时的值:
数据类型 | 转换为bool后的值 |
null | FALSE |
undefined | FALSE |
Object | TRUE |
function | TRUE |
0 | FALSE |
1 | TRUE |
0、1之外的数字 | TRUE |
字符串 | TRUE |
""(空字符串) | FALSE |
在if表达式中,javascript首先将条件表达式转换为bool类型,表达式为真值则执行if中的逻辑,否则跳过。
于是有了:
if(!a){
a="defaultValue";
}
下面我们再来看“&&”、“||”两个表达式。
由于javascript是弱类型语言,所以在javascript中这两个表达式可能跟其他语言(比如java)中不太一样。
在javascript中,“&&”运算符运算法则如下:
如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。
这就是说:
var i=""&&"真值";//->i=""
i="真值"&&"其他真值";//->i="其他真值"
i="真值"&&"";//->i=""
“||”运算符的运算法则如下:
如果||左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。
这就是说:
var i=""||"真值";//->i="真值"
i="真值"||"其他真值";//->i="真值"
i="真值"||"";//->i="真值"
于是,就可以理解:a=a||"defaultValue";
的逻辑了。如果a为假值(等于null、空字符串……),则将"defaultValue"
赋给a;否则将a的值赋给a本身。
下面我们运用||、&&来简化程序:
var parameter="";
function test(parameter){
//return 真值
return true;
} //真值操作
function operate1(parameter){
return "真值操作";
} //假值操作
function operate2(parameter){
return "假值操作";
} var result=test(parameter)&&operate1(parameter);
result=test(parameter)||operate2(parameter); //等价于
result=test(parameter)?operate1(parameter):operate2(parameter); alert(result);//真值操作 //也等价于
if(test(parameter)){
result=operate1(parameter);
}else{
result=operate2(parameter);
} alert(result)//真值操作
javascript a=a||"" 表达式的更多相关文章
- 菜鸟笔记:javascript基础之表达式和运算符
4.1 原始表达式 原始表达式是最简单的表达式~它不再包含其他表达式.它包含:直接量(程序中直接显示出来的数据值.)常量(程序中不会被修改的量)变量. 4.2 对象和数组的初始化表达式 对象和数组初始 ...
- javascript基础语法——表达式
× 目录 [1]原始表达式 [2]复杂表达式 前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascr ...
- 六天玩转javascript:javascript变量与表达式(2)
本系列内容为本人平时项目实践和参照MDN,MSDN,<javascript语言精粹>,<Effective Javascript>等资料,并且整理自己EverNote的日常积累 ...
- 六天玩转javascript:javascript变量与表达式(1)
说明 本系列属于进阶系列,语常用语法等不在本系列介绍范围之内. 在我刚开始做一个程序员并开发项目的时候,我总是喜欢使用开发语言的各种特性,每次m$发布新版C#的时候我总是会把开发者预览版下好,亲自体验 ...
- Javascript学习2 - Javascript中的表达式和运算符
原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...
- 【JavaScript 从零开始】表达式和运算符(1)
原始表达式 最简单的表达式是"原始表达式"(primary expression).JavaScript中的原始表达式包含常量或直接量.关键字和变量. // 常量或直接量 1.23 ...
- JavaScript权威指南--表达式与运算符
本章要点 表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果. 程序中的常量.变量名就是一种简单的表达式.复杂的表达式是由简单的表达式组成的,比如数组访问表达式. ...
- JavaScript 基础知识 表达式和运算符
表达式的概念:将同类型的数据(如常量.变量.函数等),用运算符号按一定的规则连起来的.有意义的式子称为表达式 一.原始表达式 最简单的表达式,是表达式的最小单位.JavaScript中的原始表达式包含 ...
- javascript运算符与表达式
表达式 表达式是关键字.运算符.变量以及文字的组合,用来生成字符串.数字或对象.一个表达式可以完成计算.处理字符.调用函数.或者验证数据等操作. 表达式的值是表达式运算的结果,常量表达式的值就是常量本 ...
- JavaScript学习笔记-表达式和语句
表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一 ...
随机推荐
- UIButton设置了UIControlStateSelected和UIControlStateHighlighted状态的图片点击会闪烁的解决方案
[btn setBackgroundImage:img1 forState:UIControlStateSelected|UIControlStateHighlighted]; [btn setIma ...
- mysql官方示例数据库
employees数据库:http://ari.iteye.com/blog/1066690 https://launchpad.net/test-db/employees-db-1/1.0.6
- 记录一次linux线上服务器被黑事件
1.原因:本来在家正常休息了,我们放在上海托管机房的线上服务器突然蹦了远程不了,服务启动不了,然后让上海机房重启了一次,还是直接挂了,一直到我远程上才行. 2.现象:远程服务器发现出现这类信息 Hi, ...
- iOS App 百思不得姐
项目介绍 仿照百思不得姐,通过看视频学习自己实践并简单总结项目开发过程中普遍遇到的问题,并且将可以用到其他项目中的分类方法进行简单总结,便于以后在别的项目中使用. 每天任务 1. 实现相应功能 2. ...
- IOS 应用 退出的一个小方法
AppDelegate * app=(AppDelegate *)[[UIApplication sharedApplication]delegate]; UIWindow *window = app ...
- SQL 必知必会-- 第1课:数据库基础和什么是SQL
第1课 了解SQL 1 1.1 数据库基础 11.2 什么是SQL 61.3 动手实践 71.4 小结 8 第一课主要是一些概念,具体笔记如下: 1,数据库(database):保存有组织的数据的容器 ...
- Oracle基础 shutdown和startup
一.shutdown命令:SHUTDOWN有四个参数:NORMAL.TRANSACTIONAL.IMMEDIATE.ABORT.缺省不带任何参数时表示是NORMAL. SHUTDOWN NORMAL: ...
- page59-一种能够累加数据的ADT(可视化版本) [可用于数据挖掘可视化工具]
public class VisualAccumulator VisualAccumulator() 创建一个累加器 void addDataValue(double val) 添加一个新的数据值 d ...
- 正则转nfa:bug出现。
本人写的一个正则到nfa的bug 刚写完前面的那篇,自己用脑子过了一下,发现了一个bug.具体情况如下. 这个bug的产生条件是多次调用假名的时候,每次调用都会修改假名的nfa图.直接这么说不好理解, ...
- 使用Xcode5开发时的icon取消高光效果
.在General中App Icons 使用Source--> AppIcon .在Images.xcassets 中依次添加对应尺寸的icon. .选中AppIcon ,在右侧第三个按钮下,勾 ...