深入了解JavaScript中逻辑赋值运算符的应用

深入了解JavaScript中逻辑赋值运算符的应用需要先了解什么是逻辑赋值运算符。逻辑赋值运算符是一种结合赋值和逻辑运算的运算符,包括了与赋值相关的三种运算符,分别是“&&=”、“||=”、“??=”。

其中“&&=”表示当且仅当左侧变量为真时赋予右侧值,例如:

let a = 1; 
a &&= 2; 
console.log(a) // 输出2
let b = 0;
b &&= 2;
console.log(b) // 输出0

结果显示赋值操作并没有生效,这是因为代码执行时自动按照求解逻辑表达式的方式判断左侧变量是否真值。只有左侧为真时才会执行后面的赋值语句。再举个例子:

let num = 1;
num > 0 &&= 2;

上述代码在执行过程中首先会将左侧的num>0表达式计算出来,结果是true,后面的2就会被赋值给num,因为在逻辑与运算中只有两个条件都为true时才会返回true,因此符合逻辑与的情况,将2赋值给num。

而“||=”表示当且仅当左侧变量为假时赋予右侧值,例如:

let a = 1;
a ||= 2;
console.log(a); // 输出1
let b = 0;
b ||= 2;
console.log(b); // 输出2

上述代码中,当左侧变量为真时,后续语句并不会执行,因此赋值语句a ||= 2没有执行;而当左侧变量为假时,后续语句一定会执行,因此赋值语句b ||= 2会执行。再看一个例子:

let num = 0;
num > 0 || = 2;

上述代码在执行过程中首先会将左侧的num>0表达式计算出来,结果是false,后面的2就会被赋值给num,因为在逻辑或运算中只有两个条件都为false时才会返回false,因此符合逻辑或的情况,将2赋值给num。

最后是“??=”表示当且仅当左侧变量为null或undefined时赋予右侧值,例如:

let a;
a ??= 2;
console.log(a); // 输出2
let b = 1;
b ??= 2;
console.log(b); // 输出1

对于未定义的变量a,左侧变量为null或undefined,因此赋值语句a ??= 2被执行,将2赋值给a;而对于已定义变量的值b,左侧变量不为null或undefined,因此赋值语句b ??= 2不会执行,b的值仍然为原来的1。

通过逻辑赋值运算符,我们可以简洁地实现一些常用的赋值逻辑,提高代码可读性和可维护性,避免无意义的赋值,如下所示:

function processData(options) {
  options.pageNum ||= 1; // 设置默认值
  if (!options.query && options.condition) {
    options.query = buildQuery(options.condition); // 满足条件时赋值
  }
  options.query &&= transformQuery(options.query); // 条件成立时转化query
  options = {...DEFAULT_OPTIONS, ...options}; // 合并对象
  return options;
}

在上述代码中,实现了对传递参数options的逻辑处理,包括设置 pageNum 的默认值、根据条件生成 query、转化 query 和合并对象。逻辑赋值运算符可以减少赋值运算的代码量,使代码更加简洁易读。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入了解JavaScript中逻辑赋值运算符的应用 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 如何寻找数组中的第二大数

    如何寻找数组中的第二大数是一个比较常见的问题。下面我将为大家详细讲解如何寻找数组中的第二大数的完整攻略。 1. 题目理解 首先需要明确题目的意思。题目所说的数组是一个由整数组成的序列。其次,题目要求找到数组中第二大的数,也就是说要找到所有元素中第二大的数。 2. 方法总结 如何在一个数组中找到第二大的数呢?下面是一些比较常见的方法: 方法一:排序 排序是一种…

    C 2023年5月23日
    00
  • C++函数对象Functor与匿名函数对象Lambda表达式详解

    C++函数对象Functor与匿名函数对象Lambda表达式详解 什么是函数对象? C++中的函数对象指的是重载了“()”运算符的类,可以像函数一样被调用,也被称为仿函数。与普通的函数不同的是,函数对象可以保存状态信息或者自定义行为,更加灵活。 在实现上,函数对象重载的“()”运算符应该是一个const成员函数,参数及返回值根据需要而定。函数对象的实现可以参…

    C 2023年5月22日
    00
  • 联想Y50C笔记本怎么关掉集成显卡?

    下面是完整的攻略: 联想Y50C笔记本如何关闭集成显卡 1. 了解联想Y50C笔记本的显卡情况 在联想Y50C笔记本中,常见的显卡有两种,Intel的集成显卡和NVIDIA或AMD的独立显卡。在默认情况下,联想Y50C笔记本会优先使用集成显卡,以此来节省电量。 2. 关闭集成显卡 要关闭联想Y50C笔记本的集成显卡,需要进行以下步骤: 步骤一:进入BIOS设…

    C 2023年5月23日
    00
  • C语言实现密码本小项目

    C语言实现密码本小项目攻略 项目介绍 本项目实现了一个基本的密码本,可以进行用户账号和密码的添加、删除、修改、查看等操作,可以有效地保护用户的个人隐私信息。 基础知识 要完成本项目,需要掌握基本的C语言编程知识,包括变量、函数、指针、结构体、文件操作等。同时还需要了解基本的加密技术,例如MD5算法、SHA算法等。 项目架构 本项目的架构主要有以下几个部分: …

    C 2023年5月23日
    00
  • Ubuntu安装Jupyter Notebook教程

    下面是Ubuntu安装Jupyter Notebook的完整攻略: 安装Jupyter Notebook: 首先,在终端中执行以下命令来更新系统: bash sudo apt-get update 然后,可以通过以下命令来安装Python和pip: bash sudo apt-get install python3 python3-pip 在Python3中…

    C 2023年5月22日
    00
  • 禁止winXP按F8键进入安全模式限制受限用户修改注册表

    禁止winXP按F8键进入安全模式限制受限用户修改注册表的完整攻略,可以分为以下几个步骤: 打开组策略编辑器。在开始菜单中点击“运行”,输入“gpedit.msc”,并回车。如下所示: 按下Win+R键,然后输入gpedit.msc并回车即可打开组策略编辑器。 找到“禁用系统恢复”,并启用该选项。在组策略编辑器中,展开“计算机配置”→“管理模板”→“系统”→…

    C 2023年5月30日
    00
  • C语言实现打印数字金字塔

    针对C语言实现打印数字金字塔,以下是完整攻略: 1. 思路分析 在进行编程实现前首先需要思考以下问题: 数字金字塔的行数、数字范围怎样指定? 数字金字塔的打印方式是怎样的? 针对以上问题,我们可以明确以下思路: 通过用户输入行数、数字范围设定数字金字塔的基本参数 使用循环、判断等结构实现数字金字塔的打印 2. 代码实现 接下来我们通过代码实现以上思路: #i…

    C 2023年5月23日
    00
  • C语言详解strcmp函数的分析及实现

    C语言详解strcmp函数的分析及实现 strcmp函数简介 strcmp()函数是C语言中用于比较两个字符串大小的函数。该函数通常用于在程序中对字符串进行排序、查找或其他处理。 strcmp()函数的定义如下: int strcmp(const char *s1, const char *s2); 该函数接受两个字符串指针参数s1和s2,并返回一个整型值。…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部