为什么使用扩展语法可与基元和函数一起使用?

95faf8e76605e973

在测试一些代码时,我遇到了一些以前并不完全熟悉的语法:

const obj = {
  key: "tree",
  value: "narra"
}

let condition = false;

var x = {...(condition && obj)};

console.log(x);

当我运行上述代码时,我想您可以传播布尔值。但是我还对其他原始数据(例如整数)甚至函数进行了测试:

let x = {...123};
console.log(x);

x = {...function(){}}
console.log(x)

我一直认为传播语法仅适用于数组,对象和其他可迭代对象(例如字符串),否则会导致语法错误。为什么在我的示例中有效,为什么它们返回void?

费利克斯·克林

对象传播只是语法糖Object.assignObject.assign将每个源值都转换为对象,就像尝试访问原始值的属性时会发生的情况一样。

但是,从基元创建的对象没有自己的属性:

console.log(Object.getOwnPropertyNames(false));

(它们怎么可能毕竟是原始体(它们的所有属性都来自其原型))

因此对最终结果并没有真正的影响。

对于函数,Object.assign仅考虑可枚举的属性,而函数的默认属性均不可枚举。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么onmouseover()函数可与属性onmouseover =“ javascript代码”一起使用,但不能与addEventListener()函数一起使用?

来自分类Dev

为什么decltype无法与重载函数一起使用?

来自分类Dev

内部类和公共构造函数-为什么它与Activator.CreateInstance一起使用?

来自分类Dev

为什么一个参数Ocaml函数可与两个参数一起使用

来自分类Dev

为什么AOP和DI很少一起使用

来自分类Dev

为什么MockMVC和Mockito不能一起使用?

来自分类Dev

为什么filter和rowSums不能一起使用?

来自分类Dev

SFINAE和衰变不能一起使用。为什么?

来自分类Dev

为什么不将向量和列表一起使用?

来自分类Dev

为什么 HHVM 和 NGINX 一起使用?

来自分类Dev

为什么HMR和chunkhash不能一起使用?

来自分类Dev

GET请求可与Postman一起使用,但为什么不能与ReactJS fetch一起使用?

来自分类Dev

为什么ng-click在此指令中仅与函数一起使用,而不与赋值一起使用?

来自分类Dev

ECMAScript Promise.all方法可与jQuery.Deferred一起使用。为什么?

来自分类Dev

为什么结构分配可与结构中的数组一起使用

来自分类Dev

LiveData可与Recyle视图一起使用,但MutableLiveData无法。为什么?

来自分类Dev

输入“ step”主体可与jQuery&HTML5一起使用。为什么?

来自分类Dev

为什么模板允许constexpr函数成员与非constexpr构造函数一起使用?

来自分类Dev

为什么使用函数声明不能与Web Worker一起使用?

来自分类Dev

为什么ResultSet.deleteRow()无法与使用Trim()函数的查询一起使用

来自分类Dev

一起使用“ new”和“ if”语句-语法相关

来自分类Dev

与Linq-to-Entities一起使用的可重用函数

来自分类Dev

证书和密钥可与openssl一起使用;他们为什么不在jks密钥库中使用JSSE?

来自分类Dev

什么是位图和位工厂,为什么人们将其与动画一起使用?

来自分类Dev

为什么Windows没有与InitializeConditionVariable()一起使用的DeleteConditionVariable()函数?

来自分类Dev

为什么ADL无法与在命名空间之外定义的函数一起使用?

来自分类Dev

为什么我不能将javascript setInterval与外部文件中的函数一起使用?

来自分类Dev

为什么不能要求构造函数并立即将其与browserify一起使用?

来自分类Dev

为什么与dplyr的mutate一起使用时,摘要函数每次都返回相同的值?

Related 相关文章

  1. 1

    为什么onmouseover()函数可与属性onmouseover =“ javascript代码”一起使用,但不能与addEventListener()函数一起使用?

  2. 2

    为什么decltype无法与重载函数一起使用?

  3. 3

    内部类和公共构造函数-为什么它与Activator.CreateInstance一起使用?

  4. 4

    为什么一个参数Ocaml函数可与两个参数一起使用

  5. 5

    为什么AOP和DI很少一起使用

  6. 6

    为什么MockMVC和Mockito不能一起使用?

  7. 7

    为什么filter和rowSums不能一起使用?

  8. 8

    SFINAE和衰变不能一起使用。为什么?

  9. 9

    为什么不将向量和列表一起使用?

  10. 10

    为什么 HHVM 和 NGINX 一起使用?

  11. 11

    为什么HMR和chunkhash不能一起使用?

  12. 12

    GET请求可与Postman一起使用,但为什么不能与ReactJS fetch一起使用?

  13. 13

    为什么ng-click在此指令中仅与函数一起使用,而不与赋值一起使用?

  14. 14

    ECMAScript Promise.all方法可与jQuery.Deferred一起使用。为什么?

  15. 15

    为什么结构分配可与结构中的数组一起使用

  16. 16

    LiveData可与Recyle视图一起使用,但MutableLiveData无法。为什么?

  17. 17

    输入“ step”主体可与jQuery&HTML5一起使用。为什么?

  18. 18

    为什么模板允许constexpr函数成员与非constexpr构造函数一起使用?

  19. 19

    为什么使用函数声明不能与Web Worker一起使用?

  20. 20

    为什么ResultSet.deleteRow()无法与使用Trim()函数的查询一起使用

  21. 21

    一起使用“ new”和“ if”语句-语法相关

  22. 22

    与Linq-to-Entities一起使用的可重用函数

  23. 23

    证书和密钥可与openssl一起使用;他们为什么不在jks密钥库中使用JSSE?

  24. 24

    什么是位图和位工厂,为什么人们将其与动画一起使用?

  25. 25

    为什么Windows没有与InitializeConditionVariable()一起使用的DeleteConditionVariable()函数?

  26. 26

    为什么ADL无法与在命名空间之外定义的函数一起使用?

  27. 27

    为什么我不能将javascript setInterval与外部文件中的函数一起使用?

  28. 28

    为什么不能要求构造函数并立即将其与browserify一起使用?

  29. 29

    为什么与dplyr的mutate一起使用时,摘要函数每次都返回相同的值?

热门标签

归档