Javascript ES6 中对象解构和普通对象赋值有什么区别?

2023-11-22

这两个代码示例有什么区别(当然除了语法之外)?

实施例1:

var user = {
   name: 'Diego',
   age: 25
}

var {name} = user;

console.log(name); // Diego

实施例2:

var user = {
   name: 'Diego',
   age: 25
}

var name = user.name;

console.log(name); // Diego

两个示例分配相同的值。我不明白使用两者有什么区别或优势/优势。


让我们将其扩展到多个属性:

var {foo, bar, baz} = user;

在传统语法中,这将是:

var foo = user.foo,
    bar = user.bar,
    baz = user.baz;

因此,对于每个属性,我们必须重复我们想要访问的对象(user) 和财产名称foo = ... .foo。新的语法可以更轻松地减少重复。

如果对象尚未存储在变量中,则还有另一个区别:

var {foo, bar, baz} = getUser();

现在我们不能只是做

var foo = getUser().foo,
    bar = getUser().bar,
    baz = getUser().baz;

因为每次调用getUser可能会做不同的事情(由于副作用)或者只是效率低下(因为我们正在重复工作)。我们必须创建一个新的局部变量来存储对象,只是为了初始化我们真正关心的三个变量。

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

Javascript ES6 中对象解构和普通对象赋值有什么区别? 的相关文章

  • 如何从 Chrome 扩展中获取 javascript 重的页面

    我正在开发一个扩展程序 用于获取用户可能在网站上访问的页面 我的扩展使用 jQuery get 来获取页面 这对于像 amazon com 这样的网站来说是正确的 但是 如果用户登录 gmail 并且我尝试获取其他一些页面 例如 帐户设置
  • 当代理关闭并启动时,Node JS mqtt 客户端未收到订阅的消息

    我创建了一个 mqtt Node js 客户端 我的连接选项如下 mqttOptions clientId 100 keepAlive 1000 clean false reconnectPeriod 1000 will willMessa
  • 生成随机数背后的数学(崩溃游戏 BTC Casino)

    我正在开发一款基于网络的游戏 其中有多个迷你游戏 我们坚持还添加一个在赌博界非常流行的崩溃游戏 然而 我们一直在努力理解生成随机 几乎不可预测 数字的概念 大多数赌博网站都会提供哈希值等来证明数字未被篡改 我们真的不需要这个 因为我们的游戏
  • 在 sinon.js 中存根和/或模拟类?

    我已经为我的应用程序创建了一个数据库包装器 如下所示 为了测试它 我显然想替换实际的数据库 我可以创建一个新类来模拟query方法并捕获那里的所有输入 但是使用sinon js看起来更合适 但是我该如何使用它呢 Is the mock or
  • 图表外的 JQPlot 图例

    我正在使用 JQPlot 并且在一个 HTML 页面上有很多图表 每个图表都有相同的图例 我的问题是 是否可以完全在图表之外显示图例 并在 HTML 页面或自己的 div 中拥有自己的位置 legend show true renderer
  • 使用 ReactJS 突出显示文本

    我试图突出显示与查询匹配的文本 但我不知道如何让标签显示为 HTML 而不是文本 var Component React createClass highlightQuery function name query var regex ne
  • 在 Angular 2+ 中进行 DOM 操作的正确方法

    我知道有一些类似的问题 但没有人回答我的问题 基本上 以角度方式操作 DOM 的正确方法是什么 比如说我有这个 html
  • 添加/更改 URL 参数并重定向到新 URL

    If the view allURL 中不存在参数 我需要将其与值一起添加到 URL 的末尾 如果它确实存在 那么我需要能够仅更改该值而不创建新的 URL 因为它之前可能有也可能没有其他参数 我找到了这个功能 但我无法让它工作 https
  • 如何更改 angularjs $http.jsonp 的标头

    我读了document http docs angularjs org api ng 24http 但我想我一定是误解了 http defaults headers jsonp Accept application json http js
  • 在 JQueryUI 小部件的 QUnit 测试中测试可见性

    这对于其他人来说可能是显而易见的 但我没有通过搜索找到它 所以在这里发布问题和一个可能的答案 背景 使用自定义 JQuery UI 小部件小部件工厂 http jqueryui com widget 在小部件中 某些元素根据其他数据 选项隐
  • 如何通过 Web-Workers 传递自定义类实例?

    由于 Web Worker JSON 在线程之间序列化数据 因此这样的方法不起作用 worker js function Animal Animal prototype foobar function self onmessage func
  • 如何将多种语言设置放入单个 .clang-format 文件中

    我想为 java javascript 和 c 创建一个 clang 格式 我知道如何转储单一语言的示例配置 但不知道如何合并这 3 个配置文件 有关如何将多种语言配置放入单个文件中的示例 BasedOnStyle LLVM IndentW
  • 从 Web 浏览器控件读取 Javascript 变量

    我正在尝试读取从表单上的 WebBrowser 控件加载和调用的 Javascript 变量的值 Example index html 引用名为 test js 的 javascript 在 test js 上 创建并填充了几个变量 然后i
  • 如何将 props 传递给模态

    我有一个购物应用程序 我可以在其中映射一些产品并将它们呈现在屏幕上 用户可以增加 减少数量 当数量达到 1 并且用户点击减少时 一些中间件会介入并询问他们是否确定要将其从购物篮中删除 如果他们单击 否 则会关闭模式并将其留在购物篮中 如果他
  • 在 for 循环中突破 Promise 块

    我有以下代码 this storeNameValidate function stores var deferred q defer console log stores for storeIndex in stores this name
  • 如何使用 JavaScript 使 DIV 可见和不可见?

    你能做类似的事情吗 function showDiv DIV visible true or something 如果 DIV 是一个元素那么 DIV style visibility visible OR DIV style visibi
  • ajaxStart() 仅调用一次,但 ajaxComplete() 调用多次

    我想对页面上的每个 AJAX 请求进行调用 I read here http docs jquery com Ajax Events that ajaxStart 全局事件 如果启动 Ajax 请求并且当前没有其他 Ajax 请求正在运行
  • 为什么事件属性不容易获取?

    我有以下代码 HERE https jsfiddle net 5n2zagjc 2 是可编辑的示例 用法 在输入字段中键入并观看控制台 function test event let keys Object keys event let k
  • JSON 数据的动态表单(不同类型)

    我尝试使用 JSON 中的数据在 AngularJS 中创建动态表单 我有这个工作 HTML p p
  • 访问 django for 循环中的元素

    我有一个 Django 模板 其中包含以下代码 该模板创建多个按钮并尝试通过单击 在同一按钮上 删除 隐藏其中一个按钮 for h in helicopters div class btn group div

随机推荐

  • 如果我不需要用户访问令牌,如何使用请求从 Python 连接到 Facebook Graph API?

    我正在尝试找到如何使用我最喜欢的 Facebook Graph API 的最简单方法Requests图书馆 问题是 我发现的所有例子都是关于获取用户访问令牌 关于重定向和用户交互 我所需要的只是应用程序访问令牌 我不处理任何非公开数据 因此
  • std::list 应该被弃用吗?

    根据 Bjarne Stroustrup 的说法slides从他的2012 年本土化主题演讲 在a中插入和删除std list在现代硬件上效率非常低 矢量节拍列表大量用于插入和删除 如果这确实是真的 那么还剩下哪些用例std list 那不
  • DataTrigger 不会更改 Text 属性

    我正在尝试在样式上使用数据触发器来更改属性 符合 最小 完整且可验证的示例 要求 要重现 首先在 Visual Studio 中创建一个 WPF 应用程序 在 App xaml cs 内 using System ComponentMode
  • 405(方法不允许)并被 CORS 策略阻止

    我有 Asp Net Core 3 WebApi 项目 其 UI 基于客户端的 Angular 7 2 1 当使用 Postman 或仅使用 URL 时 我可以使用 GET 和 POST 而不会出现任何特定错误 当通过 Angular Ch
  • 在合并列中将两个数据帧与 pd.NA 合并会产生“TypeError:NA 的布尔值不明确”

    使用 Pandas 1 0 1 如果以下情况我无法合并 df df merge df2 on some column yields File home torstein code fintechdb Sheets sheets gild p
  • 为什么不在单元测试中访问数据库?

    我在博客中读到 单元测试运行时不应访问数据库 我理解这个理论 但是说我有复杂的存储过程 这是业务领域操作的一部分 我想为与业务操作相关的代码编写一组单元测试 但是如果我模拟数据库 我会感觉我没有 真正 测试属于操作的所有部分 例如 有人可能
  • 从另一个应用程序以编程方式提交并终止 Spark 应用程序

    我想知道是否可以submit monitor kill从另一个服务激发应用程序 我的要求如下 我写了一个服务 parse用户命令 翻译他们变成可以理解的论据 to an 已经准备好的 Spark SQL 应用程序 使用以下命令将应用程序连同
  • Crockford 原型继承的小缺点

    只是在 JS 中尝试不同的继承技术 并发现 Crockford 的原型继承模式有些令人不安的地方 function object o function F F prototype o return new F var C P foo bar
  • 如何为 Python 迭代器编写分页器?

    我正在寻找一种 翻阅 Python 迭代器的方法 也就是说 我想包装给定的迭代器iter and 页面大小使用另一个迭代器 它将从 iter 返回项目作为一系列 页面 每个页面本身就是一个迭代器 最多可达页面大小迭代 我翻阅了迭代工具我看到
  • 在“选择前 n”查询中返回未锁定的行

    我需要有一个 MsSql 数据库表和另外 8 个 相同的 进程并行访问同一个表 选择前 n 行 处理这 n 行 并更新这些行的列 问题是我只需要选择并处理每一行一次 这意味着 如果一个进程访问数据库并选择了前 n 行 那么当第二个进程到来时
  • 如何使用 Python 验证特定的日期和时间格式

    我正在编写一个程序来验证 XML 文件的部分内容 我想验证的要点之一是日期时间格式 我已经在论坛上阅读了有关使用的信息time strptime 但这些例子不太适合我 而且有点超出了我的专业知识 任何人都知道我如何验证以下内容 这是日期和时
  • Git : 错误:RPC 失败; curl 92 HTTP/2 流 0 未完全关闭:PROTOCOL_ERROR (err 1)

    请不要在未阅读完整问题的情况下将其标记为重复项 当我尝试将代码推送到我们的存储库时 出现以下错误 我尝试在网上搜索这个问题 发现了惊人的资源 但没有确切的解决方案 有很多类似的问题 但我没有找到明确的讨论或适当的解决方案 我提到了这个que
  • 在字符串、u16string 和 u32string 之间转换

    我一直在寻找一种在 Unicode 字符串类型之间进行转换的方法 并遇到了这个方法 我不仅不完全理解该方法 没有评论 而且该文章暗示将来会有更好的方法 如果这是最好的方法 您能否指出它的工作原理 如果不是 我想听到更好方法的建议 mbsto
  • 如何在 .getJSON jQuery 中设置编码

    在我的网络应用程序中 我使用 jQuery 提交一些表单字段 getJSON 方法 我在编码方面遇到一些问题 我的应用程序的字符集是charset ISO 8859 1 但我认为这些字段是用UTF 8 我如何设置使用的编码 getJSON
  • IntentService 的 Android ServiceTestCase

    我目前正在为 Android 应用程序编写单元测试 并偶然发现了以下问题 我用ServiceTestCase测试一个IntentService像这样 Override public void setUp throws Exception s
  • 如何防止 ODataConventionModelBuilder 自动公开所有派生类型的元数据?

    我正在使用 ODataConventionModelBuilder 为 Web API OData 服务构建 Edm 模型 如下所示 ODataModelBuilder builder new ODataConventionModelBui
  • 阻止 .net 控制台应用程序关闭

    有什么方法可以阻止 NET 控制台应用程序关闭吗 我有一个遵循以下模式的应用程序 while true string x Console ReadLine StartLongRunningTaskOnSeparateThread x 问题是
  • 增加 Google 灵活应用引擎代码的运行时间,延迟 DeadlineExceededError

    我有一个函数作为 API 调用的一部分在 Google App Engine Flexible 上运行 结构是这样的 import externalmod app route calc here def calc answer extern
  • PyGame:使用 alpha 将透明度应用于图像?

    我要显示带有阿尔法的图像具有指定的透明度 但不知道如何做到这一点 为了详细说明我是如何解决这个问题的 下面的简介是稍微修改过的代码块这个答案 但是如果你运行它 你会看到 image 失去了它的原生 alpha 而 image2 的 alph
  • Javascript ES6 中对象解构和普通对象赋值有什么区别?

    这两个代码示例有什么区别 当然除了语法之外 实施例1 var user name Diego age 25 var name user console log name Diego 实施例2 var user name Diego age