({"key": "value"} = {}) 语法在 JavaScript 函数中的含义是什么

2024-03-19

我正在学习 JavaScript 课程(特别是 MongoDB 大学 M220JS 课程),在其中一个任务中,我遇到了类内函数声明的语法:

static async getMovies({
   filters = null,
   page = 0,
   moviesPerPage = 20,
} = {}) {
   // some code, e.g.
   console.log(moviesPerPage)
}

他们定义了一些 JSON 对象,然后在参数列表中写入“= {}”。然后,这些变量在函数内部使用(如我所示),就好像它们已像默认参数一样被声明,如下所示:

static async getMovies(filters = null, page = 0, moviesPerPage = 20) {
   // some code, e.g.
   console.log(moviesPerPage)
}

第一个示例中的语法是什么意思?有何意义= {} part?


第一个示例中的语法是什么意思?

使用的语法是以下组合默认参数语法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters and 解构赋值语法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Unpacking_values_from_a_regular_expression_match

'={}' 部分的意义是什么?

使用默认参数语法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters: the '= {}'零件组{}(一个空对象)作为单个参数的默认值getMovies

让我们分解一下:

在这里,我们设置'flying'作为默认值power范围

function giveSuperPower(power='flying'){
    console.log(`you have got: "${power}"`);
}

giveSuperPower('infinite energy');
// you have got: "infinite energy"
giveSuperPower();
// you have got: "flying"

如果参数是一个对象怎么办?

function giveSuperPower(power){
    console.log(`you have got: "${power.name||'flying'}"`);
    console.log(`it last for ${power.duration||'∞'}min`);
}
giveSuperPower({name: 'strength', duration: 5 });
// you have got: "strength"
// it last for 5min

看起来不错..对吧? 咱们试试吧

giveSuperPower();
// Uncaught ReferenceError: power is not defined

好吧,这是一个问题。

让我们设置一个默认参数值(一个空对象)

function giveSuperPower(power={}){
    console.log(`you have got: "${power.name||'flying'}"`);
    console.log(`it last for ${power.duration||'∞'}min`);
}

giveSuperPower();
//you have got: "flying" 
//it last for ∞min

让我们解构权力power范围

function giveSuperPower({name, length} = {}){
    console.log(`you have got: "${name||'flying'}"`);
    console.log(`it last for ${duration||'∞'}min`);
}

让我们设置默认参数值name and length

function giveSuperPower({name = 'flying', length = '∞'} = {}){
    console.log(`you have got: "${name}"`);
    console.log(`it last for ${duration}min`);
}

就是这样 :)

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

({"key": "value"} = {}) 语法在 JavaScript 函数中的含义是什么 的相关文章

随机推荐

  • 会话关闭后如何强制休眠释放内存?

    我们最近才开始使用 Hibernate 并且仍在适应它的工作方式 我们看到的一件事是 即使在所有会话关闭并且引用超出范围之后 hibernate 似乎仍然在其缓存中维护以前使用的数据库值 我们的代码可以多次读取一组表 因为所有的内存都被非常
  • 从通过 cron 作业运行的 bash 脚本访问 SSH 密钥

    我将这个脚本放在一起 每天更新一个分叉的 Github 存储库文件夹 如果我从提示符中调用它 它运行得很好 但我无法弄清楚如何让它在作为 cron 作业运行时可靠地利用我的 id rsa 这eval ssh agent 正是这样做的尝试 但
  • XCode中文档下的“注释”的用途是什么

    字体选择框下方有一个自由文本字段Xcode 5 似乎属于Notes类别 那么 注释和空盒子的目的是什么under No Font如下图所示 我尝试为我的一个组件 即我的按钮 使用注释 并为其添加一些注释 如图 1 所示 这是 XIB 中按钮
  • 单个请求到多个异步响应

    所以 问题来了 iPhone 很棒 但对于有服务器端要求的应用程序来说 带宽和延迟是严重的问题 我解决这个问题的最初计划是对数据位发出多个请求 双关语无意 并以此来处理大量传入 传出数据的问题 由于很多原因 这是一个坏主意 对我来说最明显的
  • Selenium:如何拦截请求

    有人知道如何在 Selenium WebDriver 中拦截 获取请求 url XHR 和响应吗 是否可以 Webdriver 不直接支持它 但您可以通过代理重定向来捕获所有流量 在爪哇 Proxy proxy new Proxy This
  • StartsWith() 不会转换为 LINQ 中的 Like('abc%')

    我有以下 ASP NET Core LINQ 代码 List
  • 如何存储和更新具有不同数据类型属性的 localStorage 键对象?

    这是我第一次使用localStorage我想存储一个localStoragekey 是一个具有不同数据类型属性的对象 例如 key localstor 它是一个包含两个属性的对象 localstor userMsg String userI
  • 将 Excel 解析为 JSON

    我想知道是否可以将 excel 解析为 json 如果可能的话 Excel 的结构使其成为可能 有应用程序什么的吗 我有这个 JSON 结构http pastie org 2760828 http pastie org 2760828我必须
  • Swift 中的@dynamicCallable 是什么?

    来自苹果的文档 The dynamicCallable属性让你可以调用named types就像你打电话一样 使用简单语法糖的函数 主要用例是动态语言互操作性 你为什么要使用 dynamicCallable而不是直接方法 dynamicCa
  • Angular 7 - 向动态创建的组件添加拖放行为

    这是我在 SO 上提出的上一个问题的延续 在声明组件选择器时添加指令 Angular 7 https stackoverflow com questions 56072516 add directives to component sele
  • VBA-Loop 和一些工作表

    我是一个初学者 我想在我的 Excel 文件的所有工作表中进行循环 除了第一个工作表 然而 下面的代码仅适用于第二个 您能解释一下这段代码有什么问题吗 非常感谢 Sub MobileTCalculation MobileTCalculati
  • Ivy、Ant、Jenkins - 在 Jenkins 构建上使用 是个好主意吗?

    我们将使用 Ivy 和 Ant 并且让 Jenkins 来完成我们的构建 我原本以为让詹金斯做一个
  • 如何使用Nashorn引擎调用Java对象

    我想使用 Nashorn 控制台来替代 Rails c 例如 我想调用Java方法从远程系统导入数据并执行数据迁移 我发现这非常有趣 https www baeldung com java nashorn https www baeldun
  • 带或不带 MSYS 的 MinGW makefile(del 与 rm)

    我正在使用 MinGW 在 Windows 上编译一些东西 我打电话mingw32 make直接来自cmd exe一切 我需要的 都工作正常 但是我发现我需要能够从 MSYS 环境进行编译 并且我遇到了问题copy and del命令不被识
  • 触摸事件不适用于 Cordova 应用程序的 ios 版本

    我有一个非常简单的科尔多瓦应用程序 它是默认科尔多瓦 设备就绪 模板的扩展 它有一个按钮 附加了一个简单的单击事件 可以看到这里在 iOS 模拟器上运行 以下是我的项目的代码 索引 html
  • 使用记录编辑器/Jrecord 解压 COMP-3 数字

    我根据 cobol copybook 创建了布局 布局快照 我尝试加载数据并选择相同的布局 它给我的某些列提供了错误的结果 我尝试使用所有二进制数字类型 类阶边缘 DIV 无 EDG 办公室 无 EDG 注册区域无 EDG 城市 无 EDG
  • 使用“lapply”对数据框 (R) 中的所有列进行缩排序

    我正在尝试应用Winsorize 函数使用lapply来自library DescTools 包裹 我目前拥有的是 data col1 lt Winsorize data col1 这本质上用基于分位数的值替换了极值 替换了以下数据 gt
  • 在Python中解析日期字符串

    我如何重写以下子句 if u in date category title month 1 elif u in date category title month 2 elif u in date category title month
  • Firefox 和 Chrome 填充之间的区别

    Firefox 和 chrome 在 css 中渲染填充的方式有所不同 在 Chrome 中显示正确的内容在 Firefox 中进行了额外填充 有办法解决吗 button font family helvetica arial font s
  • ({"key": "value"} = {}) 语法在 JavaScript 函数中的含义是什么

    我正在学习 JavaScript 课程 特别是 MongoDB 大学 M220JS 课程 在其中一个任务中 我遇到了类内函数声明的语法 static async getMovies filters null page 0 moviesPer