JavaScript中的扩展语法出现意外行为?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (85)

我正在尝试传播语法,并且在特定情况下难以理解其行为。

在一个例子中,当我使用:

const art = ["hello"]
console.log( [{...art}] )

the return value is 
=> [ { '0': 'hello' } ]

但是,当我迭代单个数组值时,它会产生完全不同的效果:

const art2 = art.map((item) => ({ ...item }))
console.log(art2)
=> [ { '0': 'h', '1': 'e', '2': 'l', '3': 'l', '4': 'o' } ]

为什么在第一个示例中使用扩展语法只将它与单个索引组合在一起,但在使用.map的第二个示例中,将其分解为不同的索引元素?由于艺术数组中只有一个项目我会假设结果是相同的。

提问于
用户回答回答于

在第一个代码中,您将传播一个包含一个项目的数组,即第零个索引处的字符串:

console.log({ ...["hello"] });

一切都如预期。但是在第二个代码中,你.map首先调用数组,然后传播提供给函数的第一个参数.map - 传播的项不是数组,而是数组包含的项,在本例中是串。展开字符串时,您将获得与每个字符索引处的值匹配的属性:

console.log(['hello'].map((item) => ({ ...item })))
// same as:
console.log({ ...'hello' });

他们是完全不同的情况。

热门问答

「九章二号」实现量子计算优越性,未来用量子计算机编程会是怎样的体验?

三掌柜

佰钧成技术有限责任公司 · 架构师 (已认证)

一名合格的、二把刀的、科班的程序猿
量子计算机的概念 量子计算机,简单地说,它是一种可以实现量子计算的机器,是一种通过量子力学规律以实现数学和逻辑运算,处理和储存信息能力的系统。它以量子态为记忆单元和信息储存形式,以量子动力学演化为信息传递与加工基础的量子通讯与量子计算,在量子计算机中其硬件的各种元件的...... 展开详请

程序员过节指南:如何玩转你的1024 ?

三掌柜

佰钧成技术有限责任公司 · 架构师 (已认证)

一名合格的、二把刀的、科班的程序猿
由于1024对于程序员来说,是一个具有特殊意义的数字,运行程序的硬件进制都是以1024为基础的,1G = 1024M,1M = 1024KB,并且1024对程序员来说,是一个非常常用的一个数字,因此从2015年起,有人提议将10.24定为中国的程序员节。 530_82f_6...... 展开详请

程序员过节指南:如何用代码做一个月饼?

YINUXY

腾讯科技有限公司 · 高级架构工程师 (已认证)

一名摸着石头过河的资深小白
推荐
首先来张效果图把: image.png 实现步骤 1、首先我们需要导入画图和数据计算的相关库。 #导入画图和数据计算的相关库 import numpy as np from numpy import sin, cos, pi import matplotlib.pyplot ...... 展开详请

腾讯 99 公益日,技术如何改变公益未来?

在5G时代,会给公益发展趋势带来三个改变:一是公益的广度,传统的公益有了技术的支撑,参与范围会更广;二是基于5G的超快速度,公益会更高效;三是公益的深度会增加,以前做公益、做支援更容易被局限于时空。当然不管技术怎么改变,我们都是想让社会更美好,热爱公益的心和对待社会的温度是不变的...... 展开详请

作为人类高质量程序员,必须掌握哪些算法?

IT小马哥

北京天谱同盛教育科技有限公司 · JAVA高级研发经理 (已认证)

想做个有钱人,却误入程序世界的一个小码农。
推荐
程序 = 数据结构 + 算法 。数据是程序的中心。数据结构和算法两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。没有数据间的有机关系,程序根本无法设计。换言之数据结构是底层,算法就是高层。数据结构为算法提供服务。算法围绕数据结构操作。可以说没有算法的程序是没...... 展开详请

程序员如何维持对编程的热情?

一方面多上github,多实践新的开源项目。思考我能从这些开源项目中学到什么来改进自己的工作。新事物总能给人带来新的乐趣。另一方面定位问题,思考解决方案的过程在未解决问题以前总是无趣的。只有解决的瞬间才有最棒的成就感。长期做自己能力范围外的事容易有挫折感,比如思考数周没有方案的事...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券