在逻辑运算中,转换为boolean类型的值后为false的情况: 0、""、null、false、undefined、NaN,其他都为true。
短路运算是利用逻辑运算中的 && 和 || 操作符,对应的有两种不同的短路运算类型
||
短路运算
仅当前者不成立时才去执行后者
原理:||先计算第一个运算数,如果可以被转换成true,则返回左边这个表达式的值,否则计算第二个运算数。即使||运算符的运算数不是布尔值,任然可以将它看作布尔OR运算,因为无论它返回的值是什么类型,都可以被转换为布尔值
通常用||短路运算来设置初始值,以下是一个ajax封装的例子:
/* 封装ajax函数
* @param {string}options.type http连接的方式,包括POST和GET两种方式
* @param {string}options.url 发送请求的url
* @param {boolean}options.async 是否为异步请求,true为异步的,false为同步的
* @param {object}options.data 发送的参数,格式为对象类型
* @param {function}options.success ajax发送并接收成功调用的回调函数
*/
function ajax(options) {
options = options || {};
options.method = options.method.toUpperCase() || 'POST';
options.url = options.url || '';
options.async = options.async || true;
options.data = options.data || null;
options.success = options.success || function () {};
// ...
}
&&
短路运算
仅当前者成立时采取执行后者
原理:&&,它先计算第一个表达式,若为假,就不会去处理第二个表达;否则继续处理后继表达式。从左到右选取表达式的第一个为非true的表达式的值,如果一直未找到则返回最后一个表达式的值
通常在回调中使用&&运算,例如:
function fn(callback) {
// ...
'function' === typeof callback && callback();
}
两种短路运算都有一个共同的特点:如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。