Javascript 返回 OR(||) 运算的字符串

2023-12-11

我无法理解这一点。

以下是使用 OR 运算符的表达式

var subCond1 = adj.getData('relationEnabled') == 'true' || adj.getData('unhideIfHidden') || adj.getData('hlFixed') == 'true';

我期望因为它是 OR 运算,所以它应该返回布尔值 true/false,但结果却得到字符串“false”。

谁能解释一下吗?


是的,这只是它的特点之一||在 JavaScript 中,这是经过深思熟虑的。它doesn't返回一个布尔值(必然),它的工作原理如下:它计算左侧操作数,如果该操作数是truthy,它返回它;否则,它计算并返回右侧操作数。

那么什么是“真实”呢?任何不“虚假”的东西。 :-) 虚假值是0, "", null, undefined, NaN, 而且当然,false。其他的都是实话。

If you need一个布尔值,只是!!结果:

var subCond1 = !!(adj.getData('relationEnabled') == 'true' || adj.getData('unhideIfHidden') || adj.getData('hlFixed') == 'true');

...但您通常不需要打扰。

这种行为的||确实很有用,特别是(我发现)在处理可能是的对象引用时null,当您想提供默认值时:

var obj = thisMayBeNull || {};

Now, objthisMayBeNull如果它是真的(非null对象引用是真实的),或者{} if thisMayBeNull是假的。

更多内容请参见我的博客上的这篇文章:JavaScript 极其强大的 OR 运算符 (||)

只是为了解决问题:&&运算符具有类似的行为:它计算左侧操作数,如果它是falsy,返回它;否则,它会计算并返回右侧运算符。如果您想要来自变量的对象属性(可能是),这很有用null:

var value = obj && obj.property;

value将是obj if obj is falsy(例如,null),或值obj.property if obj是真的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 返回 OR(||) 运算的字符串 的相关文章

随机推荐

  • 计算数组中的重复项[重复]

    这个问题在这里已经有答案了 我正在尝试显示数组的内容 但如果存在重复项 则仅打印名称和数字 例如 myArr apple apple orange apple banana orange pineapple 会显示 apple 3 oran
  • 无法使用 TesseractOCRConfig Apache Tika 提取扫描的 pdf

    我的 pdf 包含扫描图像 我想从中提取文本 我尝试过的 我尝试使用 AutoDetectParser 但没有输出 我按照中提供的解决方案进行操作Apache Tika 提取扫描的 PDF 文件还有 Apache Tika Jira 位于h
  • 使用 python 脚本发送嵌入图像的 html 电子邮件

    我是Python新手 我想发送基于 html 的电子邮件 并在电子邮件正文的左上角嵌入公司徽标 使用以下代码 电子邮件绝对可以正常工作 但不再附加嵌入的图像 不知道我哪里做错了 任何人都可以帮我吗 import smtplib from e
  • 在Python中读取文件并将值存储到变量中

    假设我有一个文件名 test txt 其中包含以下数据 AA11 BB11 CC11 DD11 AA22 BB22 CC22 DD22 AA33 BB44 CC44 DD33 在 bash shell 脚本 中我可以执行以下操作 cat t
  • 在以下任何来源中均未找到 Bumblebee Android studio 插件 [id: 'com.android.application', 版本: '7.1.0', apply: false]:

    我将我的 android studio 从 Android studio Fox 更新为 Android studio Bumblebee 2021 1 1 但我的项目都不能运行Android 工作室大黄蜂 2021 1 1 我最终得到了这
  • 使用 CSS 实现内部文本阴影

    我目前正在使用 CSS3 并尝试实现这样的文本效果 黑色模糊的内部阴影 但我找不到创建文本阴影的方法inside文本 我想知道这是否仍然可能 因为 box shadow 元素能够像这样在内部渲染阴影 box shadow inset 0px
  • Google 云存储签名 URL 上传 + Dropzone.js

    我正在尝试使用 Dropzone js 使用签名 URL 直接上传到 Google Cloud Storage 我已经设法覆盖添加到 Dropzone 的每个文件的上传 URL Chrome 开发工具说PUT请求正在发生 但我不可避免地收到
  • SOCKS5 连接超时 (GCDAsyncSocket)。 (OpenFire、XEP-0065 和 iOS XMPPFramework)

    Problem 我正在尝试使用 iOS XMPPFramework 和 OpenFire 服务器进行 TURNSocket XEP 0065 SOCKS5 我希望能够发送和接收文件 然而 在大多数情况下 接收方不会返回任何响应 我目前怀疑问
  • 如何在手机上点击网页链接时触发电话

    我需要为移动设备构建一个网页 只有一件事我还没弄清楚 如何通过点击文字来触发电话 有没有我可以输入的特殊网址 例如mailto 电子邮件标签 设备特定的解决方案不是首选 我知道 iPhone 会自动识别电话号码并为此创建一个链接 但如果也可
  • 自动布局,无需使用 Storyboards 或 Interface Builder

    我正在构建一个应用程序 我想完全避免使用 Storyboard 和 Interface Builder 因此所有 UI 都应该在代码中指定 我在用纯布局 一个很好的配置 APIAutoLayout限制 然而 我的问题是 它看起来像AutoL
  • 将非托管 char** 封送至托管 string[]

    我在 DLL 文件中有一个 C 函数 它是使用多字节字符集选项编译的 declspec dllexport void TestArray char OutBuff int Count int MaxLength for int i 0 i
  • 如何将图像传递到 html 文本区域 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想知道如何将图像从图像库传递到 html 文本区域 我应该使用 jquery javascript 吗 你知道关于这个函数的一些好的教程吗 通过操作系统内置选择器选择图像后
  • Julia 1.0 UndefVarError - 变量范围

    我将从 Julia 0 7 升级到 1 0 看来 Julia 对变量范围的规则从 0 7 更改为 1 0 例如 我想运行一个像这样的简单循环 num 0 for i 1 5 if i 3 num num 1 end end print nu
  • 如何用纯 JavaScript 制作这样的工具提示

    我需要使用 JS 而非 JQuery 插件来制作一个简单的工具提示 如下图所示 Click on image should open this tooltip and click again on the same image to clo
  • 反序列化时如何忽略 JSON 对象数组中的空白数组?

    我正在使用 Json NET 反序列化 JSON 我怎样才能忽略一个空白数组意外发生在对象数组反序列化期间 我已经在这个网站上测试了来自第三方的以下 JSONhttp json parser online fr 确认它是格式良好的 tota
  • 每个 google-maps api 密钥的引荐来源限制

    我们为超过 2500 家客户提供网站 CMS 解决方案 几乎所有网站都有谷歌地图模块 因此 自从谷歌改变了其地图使用政策以来 所有这些网站的地图模块日复一日地出现错误 我们需要想出一些快速 但肮脏 的解决方案 我们决定使用多个 api ke
  • pip Python 3 权限错误

    我在 Mac OS X 上使用 Python 3 一切都很完美 我曾经安装这样的软件包 pip install somePackage 但 IDLE 停止工作 所以我不得不重新安装它 之后 当我运行 pip 时 我得到了pip is not
  • numpy - ndarray - 如何删除基于另一个数组的行

    我想从基于另一个数组的 ndarray 中删除行 例如 k 1 3 99 n 1 a 2 b 3 c 4 c 99 a 100 e 期望结果 out 2 b 4 c 100 e k 中包含值的行的第一列将被删除 您可以使用np in1d创建
  • Shiny:使用 selectizeInput 选择组

    我有这样的愿景 我有一个选择器 用户可以单击该组来选择该组中的所有项目 例如 请参见this 当您单击输入框 X2 或 X4 时 我希望用户能够单击 西部 以选择加利福尼亚州和华盛顿州 理想情况下 我希望用户能够选择多个区域 并且能够自定义
  • Javascript 返回 OR(||) 运算的字符串

    我无法理解这一点 以下是使用 OR 运算符的表达式 var subCond1 adj getData relationEnabled true adj getData unhideIfHidden adj getData hlFixed t