从 javascript 函数返回“undefined”或“null”哪个更好?

2024-01-09

我编写了一个函数,基本上如下所示:

function getNextCard(searchTerms) {
  // Setup Some Variables

  // Do a bunch of logic to pick the next card based on termed passed through what I'll call here as 'searchTerms' all of this logic is omitted because it's not important for my question.
  // ...

  // If we find a next card to give, than give it
  if (nextCardFound)
    return nextCardFound;

  // Otherwise - I'm returning undefined
  return undefined;
}

问题:这里返回“null”会更好吗?

我可以传递任何我想要的东西 - 显然......我只是不确定什么是最好的使用方式。

调用此函数的代码知道如何处理未定义的情况(实际上它永远不会真正发生,除非出现严重错误)

我问这个问题的原因是我在某个地方听到了一些听起来像“不要将未定义的变量分配给变量”之类的东西 - 这将使调试变得更加困难。所以,事实上我可以看到null传回告诉我返回正在工作 - 但基本上功能类似于undefined.


文档:

Mozilla 文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined没有回答我的问题...谷歌也没有:\

这个问题 https://stackoverflow.com/questions/6604749/what-reason-is-there-to-use-null-instead-of-undefined-in-javascript- 对于我在这里试图弄清楚的内容来说太宽泛了。


未定义通常是指尚未分配值的内容。 Null 指的是绝对没有价值的东西。在这种情况下,我建议返回 null。请注意,没有指定返回值的函数隐式返回 undefined。

来自 ECMAScript2015 规范

4.3.10 未定义值

当变量尚未赋值时使用的原始值

4.3.12 空值

表示的原始值 故意不存在任何对象价值

http://www.ecma-international.org/ecma-262/6.0/#sec-terms-and-definitions-undefined-type http://www.ecma-international.org/ecma-262/6.0/#sec-terms-and-definitions-undefined-type

进一步阅读:

JavaScript 中何时使用 null 或 undefined? https://stackoverflow.com/questions/6429225/javascript-null-or-undefined

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

从 javascript 函数返回“undefined”或“null”哪个更好? 的相关文章

  • RxJS - 我需要取消订阅吗

    如果我有这样的事情 class MyComponent constructor this interval Observbale interval 1000 const c new MyComponent const subscriptio
  • 从 JavaScript 重新启动动画 GIF,无需重新加载图像

    我正在使用动画 GIF 创建动画幻灯片 我正在从一个动画淡入淡出到下一个动画 问题是 我发现确保 GIF 从第一帧开始动画的唯一方法是每次显示时重新加载它 每个 GIF 大约 200KB 这对于连续幻灯片播放来说带宽太大了 这是我当前的代码
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 在 JavaScript 中计算不包括周末和节假日的天数

    我正在尝试编写一个代码 其中将计算总天数 不包括周末和自定义假期 我通过 stackoverflow 和 adobe 论坛进行搜索以找到解决方案 并提供了以下代码 如果公共假期恰逢工作日 周六至周三 则不计算在内 我的问题是 如果公共假期落
  • Durandal SPA 与打字稿有关的问题

    我使用 TypeScript 1 8 将我的 durandal SPA 应用程序从 VS 2012 更新到 VS 2015 它将生成 JavaScript ECMA5 我解决了所有构建错误 但我无法修复一个名为 return 语句只能在函数
  • Jquery:排除元素

    我有以下代码 document ready function a rel each function this qtip content text img class middle src i icon processing gif alt
  • 如何将 vue3-openlayers 插件添加到 nuxt

    我有以下 main ts 文件Vue3 https v3 vuejs org import createApp from vue import App from App vue How to do this in nuxt3 import
  • es6-module 默认导出导入为未定义

    我不确定我在这里缺少什么 我正在使用 jspm 和 es6 module loader 开发一个项目 我有一个模块定义如下 import hooks from hooks import api from api import tools f
  • 如何创建显示/隐藏 Docusaurus 项目中所有详细标签状态的按钮?

    根据讨论here https stackoverflow com questions 58579048 how to add or remove the open attribute from all details tags in a r
  • 使标签充当输入按钮

    我怎样才能做一个 a href http test com tag test Test a 就像表单按钮一样 通过充当表单按钮 我的意思是 当单击链接执行操作时method get 或 post 以便能够通过 get 或 post 捕获它
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 如何从 Visual Studio Code API 打开浏览器

    我只是在探索一种从用于开发扩展的 Visual Studio Code API 打开默认浏览器的方法 以下是我的代码 var disposable vscode commands registerCommand extension brow
  • 如何在 getStaticPaths 内添加 params 值数组

    我有一个页面 其结构如下 read slug number 我想要得到slug每个对应的值number in the getStaticPaths这是代码 export async function getStaticPaths const
  • JS - 如何将图像对象变成灰度并显示它

    基本上 当单击按钮时 它会告诉移动设备转到相机 一旦相机拍照 它就会给我图像数据 它被称为数据 URL 吗 这是我处理它的代码 var imagesrc data image jpeg base64 imageData var myimag
  • 数组长度未定义[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图按如
  • 如何在控制台中隐藏日志消息的来源?

    当将消息输出到控制台时 还会显示源代码 在 Chrome 开发者工具中 它位于右侧 console log Foo Source Foo test js 1 Output 但是 在某些网站上 会显示消息without正在显示的源 例如Fac
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 如何在 JavaScript 中将日期时间微格式转换为本地时间?

    我有一个页面当前正在使用日期时间微格式 http microformats org wiki datetime design pattern显示时间戳 但我只显示我自己的时区的人类可读时间
  • 如何使用node.js获取屏幕分辨率

    我需要使用 node js 获取屏幕分辨率 但以下代码不起作用 var w screen width var h screen height 这也行不通 var w window screen width var h window scre
  • 了解客户端文件的对象 URL 以及如何释放内存

    我在用createObjectURL获取本地图像文件的引用 URL 当我完成文件 图像后 我打电话revokeObjectURL释放该内存 一切对我来说都很好 但我只是想确保我释放了我能释放的所有内存 我检查后出现了我的担忧chrome b

随机推荐

  • 使用bundle exec运行rails控制台

    当我执行时bundle exec rails c我得到一个带有以下提示的 ruby 控制台 Loading development environment Rails 3 0 3 jruby 1 6 3 001 gt 一切看起来都按顺序进行
  • 将 console.log 转换为输出到 div

    我正在使用本主题中的简单 rss feed 解析器示例 Rss 解析器示例 https stackoverflow com questions 10943544 how to parse an rss feed using javascri
  • 应用程序关闭时发送通知

    当应用程序完全关闭时 如何以编程方式发送通知 示例 用户关闭了应用程序 也在 Android 任务管理器中 然后等待 应用程序应在 X 秒后或当应用程序检查更新时发送通知 我尝试使用这些代码示例 但是 应用程序关闭时推送通知 https s
  • sbt-assemble:跳过特定测试

    我想配置sbt assembly跳过特定的测试课程 有什么办法可以做到这一点吗 如果有帮助 我使用 ScalaTest 标记了测试 Network tag See 具有共享源的附加测试配置 http www scala sbt org 0
  • 0 在socket()系统调用中表示什么?

    下一行中的 0 表示什么 我还可以使用哪些其他标志 server socket AF UNIX SOCK STREAM 0 正如其他人可能所说的那样 第三个论点socket一般是一个int指示协议 0表示调用者不想指定协议并将其留给服务提供
  • 在 OSX 10.8 SDK/objective-c 中拖动按钮

    我开始使用 Objective Ctoday为了开发 OSX 山狮 的应用程序 我有一堆按钮 我想将它们拖到其他对象中 例如文本字段 我按照苹果开发网站上的教程进行操作 但我无法让拖动部分工作 放置部分工作 例如 我可以将文件从查找器拖到文
  • 低 RAM 消耗 C++ 特征求解器

    我是新手C 编程 但我有一个任务来计算特征值和特征向量 标准特征问题Ax lx 对于对称矩阵 和厄米矩阵 对于尺寸非常大的矩阵 二项式 L L 2 where L大约是18 22 现在我正在具有大约 7 7 GB 可用内存的机器上进行测试
  • 为什么我的重载 C++ 构造函数没有被调用?

    我有一堂这样的课 class Test public Test string value Test bool value 如果我创建一个像这样的对象 Test test Just a test bool 构造函数被调用 有人知道为什么吗 T
  • PHP使用session来选择下拉选项

    我已经获得了此上传表单 并且希望保留会话中下拉列表中的所选选项 以便在提交后显示最后的选择 例如我选择 颜色 选项 提交后颜色仍然在下拉列表中选择 我回显 SESSION testname 就在第一个单选按钮之前 它给我返回 颜色 但在选项
  • JQuery 中的简单 SQL 查询生成器

    我正在尝试找到一个类似于 SQL 查询生成器插件的简单查询生成器界面http plugins jquery com project SQL QUERY BUILDER http plugins jquery com project SQL
  • 是否可以乐观地更新端点的所有缓存?

    在 redux 教程中 我们学习了如何执行乐观更新 第 8 部分 rtk query advanced implementing optimistic updates https redux js org tutorials essenti
  • 将 4 字节消息头从 C# 客户端发送到 Java 服务器

    我正在尝试为用 Java 编写的服务器编写一个 C 客户端 服务器需要一个 4 字节 Java 中的 DataInputStread readInt 消息头 后跟实际消息 我对 C 完全陌生 如何将此消息头发送到 Java 服务器 我尝试了
  • 如何删除 Google OAuth2gapi 事件侦听器?

    我真的很难理解如何删除谷歌gapi事件监听器 下面粗体是所讨论的完整功能 window gapi auth2 getAuthInstance isSignedIn listen onAuthChange 我想在 useEffect 挂钩中使
  • 如何使用量角器通过文本查找并单击表格元素?

    tr Some Text tr 我见过其他一些类似的问题 但我还无法解决 这就是我到目前为止所尝试过的 element all by repeater column in columns findElement by id code get
  • `sequenceA` 是如何工作的

    我是 Haskell 新手 想了解它是如何工作的 sequenceA 3 2 1 3 我从定义开始 sequenceA Applicative f gt f a gt f a sequenceA pure sequenceA x xs lt
  • 有没有办法在 python/opencv 中从单摄像头视频生成实时深度图?

    我试图将单个图像转换为其深度图 但我找不到任何有用的教程或文档 我想使用 opencv 但是如果您知道使用张量流等获取深度图的方法 我很高兴听到它 有很多关于立体视觉的教程 但我想让它更便宜 因为它是一个帮助盲人的项目 我目前正在使用 es
  • 无法使用 Python 中的检查通过 exec 获取“声明”的方法的源代码

    下面的代码抛出异常 import inspect def work my function code def print hello print Hi exec my function code globals inspect getsou
  • 当数据框中存在 NaN 时使用 astype 时出错

    df A B 0 a 10 b 20 10 1 a 20 NaN 2 NaN b 30 10 3 a 40 b 40 10 我试过 df A df A str extract d astype int df B df B str extra
  • 如何在 JSONRequestOperation 上向 AFNetworking 添加自定义标头

    您好 我有以下访问 URL 的代码 NSString stringURL NSString stringWithFormat someAPI kSERVICE URL kSERVICE VERSION NSURLRequest reques
  • 从 javascript 函数返回“undefined”或“null”哪个更好?

    我编写了一个函数 基本上如下所示 function getNextCard searchTerms Setup Some Variables Do a bunch of logic to pick the next card based o