首页 > 编程语言 >短路在JavaScript中是如何工作的?

短路在JavaScript中是如何工作的?

时间:2024-02-14 16:56:27浏览次数:23  
标签:操作数 console 中是 JavaScript user address 短路

在 JavaScript 中,理解真实和虚假的值是编写高效简洁代码的基础。结合短路的概念,开发人员可以编写优雅的解决方案来应对常见的编程挑战。

在本实践指南中,我们将探讨真实值和虚假值,并了解 JavaScript 中短路的机制。

您可以从这里获取所有源代码。

(本文内容参考:java567.com)

目录

  • 了解真实和虚假的价值观
  • 什么是 JavaScript 中的短路?
  • 实际使用案例
  • 结论

了解真实和虚假的价值观

在 JavaScript 中,在布尔上下文中计算时,每个值都具有固有的布尔解释。计算结果为 的值被认为是真实的,而评估结果为 的值是虚假的。true``false

让我们来看看一些例子:

// Truthy Values
if ('Hello') {
    console.log('Truthy!'); // Output: Truthy!
}

if (42) {
    console.log('Truthy!'); // Output: Truthy!
}

if (['apple', 'banana']) {
    console.log('Truthy!'); // Output: Truthy!
}

// Falsy Values
if ('') {
    console.log('Falsy!'); // This code block is not executed
}

if (0) {
    console.log('Falsy!'); // This code block is not executed
}

if (null) {
    console.log('Falsy!'); // This code block is not executed
}

以下是上述代码的细分:

真实价值观

  • 'Hello':JavaScript 中的任何非空字符串都被认为是真实的。在这种情况下,字符串为非空,因此条件的计算结果为 true。'Hello'
  • 42:任何非零数(正数或负数)都被认为是真实的。由于是非零数,因此条件的计算结果为 true。42
  • ['apple', 'banana']:JavaScript 中的数组被认为是真实的,无论其内容如何。由于数组为非空,因此条件的计算结果为 true。['apple', 'banana']

虚假的价值观

''(空字符串):JavaScript 中的空字符串被认为是虚假的。因此,条件的计算结果为 false,并且不会执行 if 语句中的代码块。

0:数字零在 JavaScript 中被认为是假的。因此,条件的计算结果为 false,并且不会执行 if 语句中的代码块。

null:null 值在 JavaScript 中被认为是虚假的。因此,条件的计算结果为 false,并且不会执行 if 语句中的代码块。

在 JavaScript 中,除 、 、 (空字符串)、 和 之外的值被认为是真实的。在 JavaScript 中编写条件语句和逻辑运算时,理解这些真值和假值至关重要。false``0``''``null``undefined``NaN

理解真值和假值至关重要,因为它们在条件语句和逻辑运算中起着重要作用。

什么是 JavaScript 中的短路?

短路是逻辑运算符 (, ) 表现出的一种行为,如果结果可以通过单独计算第一个操作数来确定,则跳过对第二个操作数的计算。&&``||

让我们通过实际示例来检查短路的工作原理:

运算符&&

运算符返回第一个假操作数,如果所有操作数都为真,则返回最后一个真实操作数。&&

const value = 0;
const result = value && 'Truthy Value';
console.log(result); // Output: 0

在此示例中,计算结果为 ,这是一个虚假值。由于第一个操作数是假的,因此表达式短路,结果是 。value``0``0

const value = 'Hello';
const result = value && 'Truthy Value';
console.log(result); // Output: Truthy Value

在这里,计算结果为一个非空字符串,这是真实的。因此,返回第二个操作数,因为它是最后一个真实操作数。value``'Truthy Value'

运算符||

运算符返回第一个真实操作数,如果所有操作数都是假操作数,则返回最后一个假操作数。||

const name = '';
const displayName = name || 'Guest';
console.log(displayName); // Output: Guest

在此示例中,计算结果为空字符串,该字符串是假的。因此,表达式短路,并分配给 。name``'Guest'``displayName

const name = 'Alice';
const displayName = name || 'Guest';
console.log(displayName); // Output: Alice

在这里,计算结果为一个非空字符串,这是真实的。因此,将返回第一个操作数,因为它是遇到的第一个真实操作数。name``'Alice'

实际使用案例

提供默认值

短路通常用于为变量提供默认值。

const options = {};
const limit = options.limit || 10;
console.log(limit); // Output: 10 (default value)

在此示例中,是一个空对象。该代码打算根据属性为其分配一个值。但是,由于未定义(未定义),因此使用逻辑 OR () 运算符。options``limit``options.limit``options.limit``||

逻辑 OR 运算符返回第一个操作数的值(如果为真)。如果第一个操作数是假的(在本例中为 undefined),则返回第二个操作数(在本例中为 )的值,该值充当默认值。options.limit``10

因此,将被分配值,因为是假的(未定义)。limit``10``options.limit

安全访问嵌套属性

短路还可用于安全地访问对象的嵌套属性。

const user = { address: { city: 'New York' } };
const city = user.address && user.address.city;
console.log(city); // Output: New York

在此示例中,是一个对象,其中包含另一个对象,该对象包含该属性。user``address``city

该表达式正在利用短路。它检查是否存在,如果存在,则进一步检查是否存在。user.address && user.address.city``user.address``user.address.city

如果是真实的(如果存在),JavaScript 会继续计算 。如果是虚假的(如果它是未定义或 null),则 JavaScript 会使计算短路,并且不会继续计算。user.address``user.address.city``user.address``user.address.city

这样可以防止未定义或为 null 的潜在。TypeError``user.address

由于在这种情况下存在,因此表达式的计算结果为 ,即 。user.address``user.address.city``'New York'

此技术可确保安全访问嵌套属性,并有助于避免在对象未按预期完全填充或结构化的情况下出现运行时错误。

结论

短路可以大大增强您的开发工作流程。

您可以在项目中练习这些概念,以熟练有效地利用 JavaScript 的短路行为。

(本文内容参考:java567.com)

标签:操作数,console,中是,JavaScript,user,address,短路
From: https://www.cnblogs.com/web-666/p/18015289

相关文章

  • 如何在 JavaScript 中比较两个日期 – 技术、方法和最佳实践
    在JavaScript中,您可以使用date对象有效地处理应用程序中的日期、时间和时区。Date对象可帮助您有效地操作数据、处理各种与日期相关的任务,并在创建实际应用程序时执行一些计算。(本文内容参考:java567.com)在本文中,我们将了解以下主题:日期比较概述日期比较在JavaScript......
  • 最短路学习笔记
    最短路学习笔记单源最短路径问题(SingleSourceShortestPath,SSSP问题)。Part1DijkstraPart1.0Dijkstra朴素算法洛谷P3371【模板】单源最短路径(弱化版)Dijkstra算法Dijkstra算法的流程如下:初始化$dist[1]=0$,其余节点的$dist$值为正无穷大。找出一个未被标记的......
  • p5js: JavaScript 创意绘画
    p5js是一个免费开源的Javascript创意绘画工具,通过p5js可以实现代码绘画01鼠标变色鼠标触发绘画区域,即马上变色,松开恢复functionsetup(){createCanvas(400,400);//设置画布大小}functiondraw(){if(mouseIsPressed)//被鼠标触发{background(255,51,......
  • 51tampermonkey javascript hook介绍
     hookget参数 //==UserScript==//@nameGET请求参数钩取脚本//@namespacehttp://your-namespace.com//@version1.0//@description钩取GET请求参数并输出到控制台//@matchhttp://*/*//@matchhttps://*/*//@grant......
  • 最短路径
    最短路算法主要有Floyd,Dijkstra,Bellman-Ford,SPFA,Jahnson,A*这六种算法。Floyd用来处理全源最短路,可以处理负边权。时间复杂度为\(\mathcal{O}(N^3)\)。Dijkstra用来处理单源最短路,不能处理负边权。时间复杂度最优为\(\mathcal{O}{(M\logM)}\)。Bellman-Ford用来处理单......
  • javascript 下载 application/octet-stream 文件
    functiondownloadFile(id){varxhr=newXMLHttpRequest();xhr.open('POST','https://localhost/api/app/isp-detection/'+id+'/download');xhr.responseType='blob';xhr.setRequestHeader('Cont......
  • JavaScript 的实际应用
    1. WebWizardry:从表单验证到交互。地图、JavaScript使网页变得栩栩如生,将静态内容转变为动态体验。2. MobileMagic:得益于ReactNative和Ionic等框架,JavaScript不再仅仅局限于浏览器。它正在向移动应用程序开发领域展开翅膀,将其魔力带入iOS和Android。3.游戏开始:?借......
  • Java和JavaScript区别与联系
    区别和联系Java和JavaScript是两种不同的编程语言,尽管它们的名称相似,但它们有着不同的特性、用途和工作环境。以下是对它们之间区别与联系的详细说明:语言类型:Java:Java是一种静态类型的编程语言,意味着在编译时需要声明变量的类型,并且强调面向对象编程。JavaScript:JavaScri......
  • 次短路径问题
    一、问题描述P2865[USACO06NOV]RoadblocksG二、问题简析如果求最短路径,我们很自然会想到\(Dijkstra\)。但是,这道题要求的是次短路径。记到\(u\)的最短路径为\(d_1[u]\),到\(u\)的次短路径为\(d_2[u]\)。则\(d_2[v]=d_1[u]+e(u,v)\)or\(d_2[u]+e(u,v).w\)......
  • ORACLE_查询blob字段中是否包含某个字符串/blob字段模糊匹配
    要查询一个BLOB字段中是否包含某个字符串,可以使用Oracle的DBMS_LOB.INSTR函数。示例如下,这里我们有2条记录,每条blob字段都有数据;其中第二条blob字段包含有字符串“T_NT_EndorsementBillEntry”,第一条记录没有正常我们如下查询会报错:对这个blob截取也会报这个错,这里我......