JavaScript 里 var a =a ||{}
首先,搞明白||的意思。
1、在js里面,||运算符,比如(A||B)有个很有意思的用处:
2、系统先判断A表达式的布尔值,是真是假。如果为真,直接返回A。如果为假,直接返回B(不会判断B是什么类型)。
所以,var a=a||{},这样写的意图就是,先考虑右侧的表达式 a||{}, 根据规则,先判断a的值是否为真(也就是判断a本身是否存在),如果a本身存在,则返回a。如果a不存在,则返回后面的{}。最后再将值返回给a。这样写,虽然看着比较复杂点,但是效率高,特别是判断一些变量,属性或者是传参是否存在,如果存在就直接用,不存在,就赋予一个空变量。相当于下面的简写:
if(a){
var a=a;
}
else{
var a={} //将一个空对象传给a
}
或这样答
var a;
if(a === 0 || a === "" || a === false || a === null || a === undefined) a = {}
那句话的定义。
还有你这种情况 a 是函数的入口参数吧,代码是这样的对吧
function(a){
var a = a || {}
}
它等价于
function(a){
if(a === 0 || a === "" || a === false || a === null || a === undefined) a = {}
}
JavaScript 里 var a =a ||{}的更多相关文章
- Javascript里,想把一个整数转换成字符串,字符串长度为2
Javascript里,想把一个整数转换成字符串,字符串长度为2. 想把一个整数转换成字符串,字符串长度为2,怎么弄?比如 1 => "01"11 => " ...
- JavaScript里的依赖注入
JavaScript里的依赖注入 我喜欢引用这句话,“程序是对复杂性的管理”.计算机世界是一个巨大的抽象建筑群.我们简单的包装一些东西然后发布新工具,周而复始.现在思考下,你所使用的语言包括的一些内建 ...
- 如何才能通俗易懂的解释javascript里面的"闭包"?
看了知乎上的话题 如何才能通俗易懂的解释javascript里面的‘闭包’?,受到一些启发,因此结合实例将回答中几个精要的答案做一个简单的分析以便加深理解. 1. "闭包就是跨作用域访问变量 ...
- javascript里的循环语句
前序:我一直对于for跟for..in存在一种误解,我觉得for都能把事情都做了,为啥还要for...in...这玩意了,有啥用,所以今天就说说JavaScript里的循环语句. 循环 要计算1+2+ ...
- Safari 里的javascript 里不能用submit作为函数名
Safari 里的javascript 里不能用submit作为函数名, 这样写的时候,怎么也运行不了JeasyUI的onSubmit的function, 改个名就可以了.而在chrome下面就没问题 ...
- JavaScript中var和this定义变量的区别
JavaScript中var和this定义变量的区别 在js中声明变量时可以使用var和this,但使用this的有很大一部分参考书是没有的,经过查阅相关资料总结如下: 用var和this声明变量,存 ...
- JavaScript里的循环方法总结
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) ...
- JavaScript里的循环方法之forEach,for-in,for-of
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...
- JavaScript里的循环方法:forEach,for-in,for-of
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) ...
随机推荐
- SQL Server数据库中导入导出数据及结构时主外键关系的处理
2015-01-26 软件开发中,经常涉及到不同数据库(包括不同产品的不同版本)之间的数据结构与数据的导入导出.处理过程中会遇到很多问题,尤为突出重要的一个问题就是主从表之间,从表有外检约束,从而导致 ...
- mysql配置主从复制
1.原理: MySQL之间数据复制的基础是二进制日志文件(binary log file).一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在 ...
- 自定义InputFormat和OutputFormat案例
一.自定义InputFormat InputFormat是输入流,在前面的例子中使用的是文件输入输出流FileInputFormat和FileOutputFormat,而FileInputFormat ...
- 2018-2019-1 20189201 《LInux内核原理与分析》第七周作业
我的愿望是 好好学习Linux 一.书本第六章知识总结[进程的描述和进程的创建] 基础知识1 操作系统内核实现操作系统的三大管理功能,即进程管理功能,内存管理和文件系统.对应的三个抽象的概念是进程,虚 ...
- 学习 Vim —— Vimtutor 总结笔记
Lesson 2 2.1-2.3 删除 [dw] 删除从光标开始处至下一词开始前的部分,光标停在下一词的词首. [de] 删除从光标开始处至词尾的部分. [d$] 删除从光标开始处至行末的部分. 2. ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习8
#include <iostream>#include <string>using namespace std;int main (){ string words; int i ...
- 杭电1506 java
求最大子矩阵面积(dp) import java.util.*; public class Main1{ public static void main(String[] args) { Scanne ...
- 浅谈AngularJS中的指令和指令间的相互通信
说到AngularJS,我们首先想到的大概也就是双向数据绑定和指令系统了,这两者也是AngularJS中最为吸引人的地方.双向数据绑定呢,感觉没什么好说的,那么今天我们就来简单的讨论下AngularJ ...
- 16进制转化8进制---map
#include "stdio.h" #include "string.h" #include "string" #include &quo ...
- 【C++ 流类库与输入输出 】实验七
1. 基础练习 (1)教材习题 11-7 (2)教材习题 11-3 (3)教材习题 11-4 2. 应用练习 (1)已知有班级名单文件 list.txt(见实验 7 附件包).编写一个应用程序实现随机 ...