深入了解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日

相关文章

  • C语言模拟掷骰子游戏

    C语言模拟掷骰子游戏攻略 游戏规则 该游戏的规则如下: 玩家选择游戏模式(一次投掷或三次投掷),并输入对应的数字(1或3)。 系统随机生成一个1~6之间的数字,表示掷出的点数。 如果是一次投掷,系统将输出该点数,并提示玩家是否愿意再次投掷。 如果是三次投掷,则继续执行步骤2,直到三次投掷结束。最终输出投掷结果的总和,并提示玩家是否愿意再次投掷。 实现步骤 对…

    C 2023年5月22日
    00
  • 基于C语言实现随机点名器(附源码)

    基于C语言实现随机点名器(附源码)攻略 背景 在日常教学过程中,老师需要选择学生进行点名,但是传统的手工点名有些麻烦,而电子化的随机点名器则可以快速、方便地进行点名,提高了点名的效率。 组件 点名器的组成部分为三个部分:1. 学生名单(可采用文本文件实现存储);2. 随机数生成器(用于随机产生学生编号);3. 点名器(根据随机数生成器产生的随机数来选出学生进…

    C 2023年5月23日
    00
  • C语言超详细i讲解双向链表

    C语言超详细讲解双向链表 什么是双向链表 双向链表是一个动态数据结构,它由一系列的节点构成,每个节点分为三部分:数据域、指向前驱节点的指针和指向后继节点的指针。双向链表支持在任意位置插入或删除节点,与数组相比,它具有更好的灵活性和效率。 如何实现双向链表 定义节点 typedef struct DNode { int data; struct DNode* …

    C 2023年5月22日
    00
  • C++ Primer Plus 第四章之C++ Primer Plus复合类型学习笔记

    C++ Primer Plus 第四章之C++ Primer Plus复合类型学习笔记 1. 复合类型简介 在C++中有许多复合类型,如数组、结构体、共用体和指针等,它们能够将多个基本类型变量组合成更加复杂的数据结构。在使用复合类型时,需要注意其内存结构和使用方法,以充分发挥其特性。 2. 数组 数组是一种复合类型,可以存储多个同一类型的数据,通过下标访问数…

    C 2023年5月22日
    00
  • C++解析特殊符号tab、换行符号实例代码

    好的。 C++解析特殊符号tab、换行符号实例代码 1. tab符号解析 Tab符号的特殊字符是\t,表示在一个字符串中加入Tab空格。 下面是一个例子,演示如何在C++中使用\t来生成Tab: #include <iostream> int main() { std::cout << "Name:\tJohn" …

    C 2023年5月24日
    00
  • 基于javascript实现按圆形排列DIV元素(二)

    基于JavaScript实现按圆形排列DIV元素的完整攻略如下: 步骤1:构建HTML结构 首先,我们需要构建一个HTML页面,并在其中添加一个父级div元素和一些子级的div元素。父级div元素用于容纳所有子级div元素,并设置其宽度和高度为固定值,例如600px。子级div元素用于显示实际内容,我们只需要设置它们的宽度和高度即可。 <div id=…

    C 2023年5月22日
    00
  • php pthreads多线程的安装与使用

    1. 安装php pthreads扩展 首先需要安装pthreads扩展。对于Windows系统,可以从 PECL网站 下载对应的dll文件。对于Linux/Mac OS用户,可以通过pecl安装pthreads扩展,命令如下: pecl install pthreads 安装完成之后,需要在php.ini配置文件中添加扩展: extension=pthre…

    C 2023年5月22日
    00
  • C语言实现简易计算器功能

    C语言实现简易计算器功能 简介 计算器是程序员开发中常用的功能之一。实现计算器功能可以提高自己的编程能力,同时也是开发其它应用程序的基础。在本文中,我们将讲解如何使用C语言实现一个简单的计算器。 实现步骤 以下是实现计算器功能的步骤: 获取用户输入的算式; 分解算式,将每个操作数和运算符都存储到相应的变量中; 根据运算符计算结果; 输出结果。 代码示例 下面…

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