资讯专栏INFORMATION COLUMN

《javascript高级程序设计》笔记:短路运算

Vicky / 1874人阅读

在逻辑运算中,转换为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();
}

两种短路运算都有一个共同的特点:如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84768.html

相关文章

  • JavaScript 高级程序设计(第三版)笔记

    摘要:以上是使用转换函数方法时会返回的值在用判断的时候,首先执行了,然后判断为真或假。对象的遍历返回一个数组,包括对象自身的不含继承的所有可枚举属性不含属性的键名。 tip:本文含部分Es6语法 1.if(a)的自动转换 数据类型    转换为true的值       转换为false的值   Boolean      true              false   String  任何...

    tulayang 评论0 收藏0
  • JavaScript 高级程序设计(第三版)笔记

    摘要:以上是使用转换函数方法时会返回的值在用判断的时候,首先执行了,然后判断为真或假。对象的遍历返回一个数组,包括对象自身的不含继承的所有可枚举属性不含属性的键名。 tip:本文含部分Es6语法 1.if(a)的自动转换 数据类型    转换为true的值       转换为false的值   Boolean      true              false   String  任何...

    leo108 评论0 收藏0
  • JavaScript 高级程序设计(第三版)笔记

    摘要:以上是使用转换函数方法时会返回的值在用判断的时候,首先执行了,然后判断为真或假。对象的遍历返回一个数组,包括对象自身的不含继承的所有可枚举属性不含属性的键名。 tip:本文含部分Es6语法 1.if(a)的自动转换 数据类型    转换为true的值       转换为false的值   Boolean      true              false   String  任何...

    opengps 评论0 收藏0
  • 读书笔记(06) - 语法基础 - JavaScript高级程序设计

    摘要:写在开头本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。可移步笔者的文章中替换方式参考文档高级程序设计作者以乐之名本文原创,有不当的地方欢迎指出。 showImg(https://segmentfault.com/img/bVblGMc?w=600&h=400); 写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。...

    iOS122 评论0 收藏0
  • JavaScript高级程序设计笔记:基本概念

    摘要:一写在前面最近重读高级程序设计,总结下来,查漏补缺。但这种影响是单向的修改命名参数不会改变中对应的值。这是因为对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。实际改变会同步,改变也会同步 一、写在前面 最近重读《JavaScript高级程序设计》,总结下来,查漏补缺。 二、JS简介 2.1 JS组成 ECMAscript:以ECMA-262为基础的语言,由...

    ygyooo 评论0 收藏0

发表评论

0条评论

Vicky

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<