JS:函数参数默认值

2023-11-22

在某些语言中,您可以为函数的参数设置默认值:

function Foo(arg1 = 50, arg2 = 'default') {
    //...
}

你如何在 JavaScript 中做到这一点?


在 JavaScript 中,任何未设置的内容都会被赋予值undefined。这意味着,如果您想为函数设置默认值,则需要在第一行检查这些值是否未定义:

function Foo(arg1, arg2) {
    if (typeof(arg1) === "undefined") { arg1 = 50; }
    if (typeof(arg2) === "undefined") { arg2 = "default"; }
}

如果您大致知道这些值是什么,您可以采取一些捷径:

function Foo(arg1, arg2) {
    arg1 = arg1 || 50;
    arg2 = arg2 || "default";
}

但是,如果这些论点是错误的,它们将被替换。这意味着如果 arg1 是空字符串,null, undefined, false or 0它将更改为 50,所以如果您选择使用它,请小心

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

JS:函数参数默认值 的相关文章

随机推荐

  • 是否应该定期调用 GC.Collect() ? [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我最近发布了一篇关于日志文件读取器因内存不足错误而失败的文章 gt 归档日志文件时内存不足错误 在我有机会尝试更简单的方法 将日志文件命名为带有日期以防止存档 之前 这显然意味着重写方法等
  • 如何使用 Watson Discovery 获得准确答案而不是整个文档?

    测试后发现服务 至少对我来说似乎没什么用 否则我可能会错过一些东西 当我查询时 它匹配文档并返回整个文档 如果我的文档很大 那么对于所有查询 它都会返回与查询文本匹配的整个文档 这是无用的 现在我是否必须为每个查询创建一个单独的文档 如果是
  • BaseFoo 不能使用不同的参数继承:> 和 >

    这是一个简化版本Java继承多级层次结构中的Fluent方法返回类型 给出以下代码 public enum X static interface BaseFoo
  • 尝试与 typedef 交朋友时出现“详细类型引用 typedef”错误

    假设我有以下代码 一个简单的 CRTP 类层次结构 我想 typedef 基类类型以节省自己的输入 在我的实际代码中 我多次使用基类类型 并且基类采用多个模板参数 并且我需要与基类成为朋友 因为我想保留实施私有 template lt cl
  • Enterprise Architect:当源代码(源 -> 模型)位于光盘中的不同绝对路径时,如何与源代码同步?

    我使用 逆向工程 工具在 Enterprise Architect 中创建了一个模型 将我的 Java 类导入到 EA 模型中 现在 我打算随着开发的进行使该模型与代码保持同步 问题是 当我尝试同步模型中的代码 源 gt 模型 时 只有当源
  • SDL_GL_SwapBuffers() 间歇性缓慢

    我正在开发一个 sdl opengl 游戏 以供娱乐 平均而言 我获得了不错的 fps 但运动确实很不稳定 因为 SDL GL SwapBuffers 会随机花费相当长的时间来处理 加载纹理并写入缓冲区后 有时会花费超过 100 毫秒 我删
  • 使用@javax.validation.Valid时如何以正确的方式抛出自定义异常?

    使用时如何以正确的方式抛出自定义异常 javax validation Valid 我在用着 Valid在控制器中 以及 AssertTrue验证请求正文字段 public ResponseEntity
  • Oracle REGEXP_LIKE 和字边界

    我在使用 REGEXP LIKE 匹配单词边界时遇到问题 正如预期的那样 以下查询返回一行 select 1 from dual where regexp like DOES TEST WORK HERE TEST 但我也想匹配单词边界 因
  • C# .NET 标签中的多种颜色

    我正在寻找一种在单个 C NET 标签中显示多种颜色的方法 例如 标签显示一系列 csv 分隔值 每个值的颜色取决于它们所属的存储桶 我不想使用多个标签 因为值是可变长度的 并且我不想使用动态布局 有对此的原生支持吗 NET 中没有本机控件
  • git 中神秘消失的分支

    以下是我执行的一些 git 操作 如您所见 我创建了一个新分支 修改了我的文件 然后提交了更改 在换回另一个分支后 希望合并 我刚刚工作的分支消失了 有谁知道如何从fixed merge branch恢复文件 我吓坏了 1 9 2 whis
  • 分叉连接优化

    我想要的是 我想致力于 fork join 算法的优化 我所说的优化只是指计算最佳线程数 或者如果您愿意的话 计算SEQUENTIAL THRESHOLD 参见下面的代码 PSEUDOCODE Result solve Problem pr
  • 拥有 MSI 安装包的主要优势是什么?

    我以为这会在网络上的某个地方 但我无法用谷歌搜索它 考虑到创建 MSI 包的复杂性 与 NSIS InnoSetup 等相比 什么是一个令人信服的理由去经历所有这些混乱 使用 MSVS 蹩脚的安装项目向导 学习一个全新的语言 生态系统只是为
  • json 键作为数字

    我有一个 JSON 传递给脚本 我不知道 JSON 键 因为它们是动态的 实际上 它们是数字 这就是我得到的 var countries 223 142 143 222 23 26 25 24 170 1 2 我尝试像这样访问数据 var
  • random() 函数内部 - 它是如何实现的?

    我们通常使用 random 函数在 C 中创建随机数 使用 void srand 无符号整数种子 可以改善结果 因为它会根据种子的值生成随机数 谁能告诉我随机函数是如何实际实现的 Here是 GNU C 库的 random 函数中使用的算法
  • Git - 包超出允许的最大大小

    我正在处理大量的二进制文件 最近对本地 git 存储库进行更改后 我尝试将更改推送回远程 结果收到以下错误 remote fatal pack exceeds maximum allowed size 不幸的是我无法使用所描述的策略here
  • Python:生成具有趋势的随机时间序列数据(例如周期性、指数衰减等)

    我正在尝试生成一些具有趋势的随机时间序列 例如周期性 例如销售 指数下降 例如帖子上的 Facebook 点赞数 指数增长 例如比特币价格 普遍增加 股票行情 等 我可以生成普遍增加 减少时间序列如下 import numpy as np
  • TextView 具有不同的字体和样式?

    是否可以在同一文本中包含不同大小 字体类型或样式的文本TextView 像这样的东西 myLogin logout 您可以使用以下方法执行此操作 textView setText Html fromHtml b myLogin b i lo
  • UICollectionView:必须使用非零布局参数进行初始化

    I added UICollectionView通过代码 现在 应用程序崩溃并显示消息 UICollectionView must be initialized with a non nil layout parameter 你有什么想法来
  • 如何将适用于 Windows 的 PHP 5.3 扩展编译为 DLL?

    我目前正在重写一个PHP最初编写的扩展PHP 4 2 2 我的问题是让构建 编译过程生成一个 dll而不是将扩展编译到PHP核 环境是windows server 2003 我使用的是Visual Studio 2008 我使用 EXT S
  • JS:函数参数默认值

    在某些语言中 您可以为函数的参数设置默认值 function Foo arg1 50 arg2 default 你如何在 JavaScript 中做到这一点 在 JavaScript 中 任何未设置的内容都会被赋予值undefined 这意