美文网首页
JS - 做个小实验,看看『解构赋值』的求值顺序

JS - 做个小实验,看看『解构赋值』的求值顺序

作者: 恒星的背影 | 来源:发表于2018-09-16 12:14 被阅读0次
let [x = 1, y = x] = [2];    // x=2; y=2

上面这条语句的运行结果和我想象的不太一样,我以为的顺序是:

x=1
y=x
x=2 // x=2; y=1

那这个表达式的计算顺序究竟是怎样的呢?看下面:

let [
  x = (_ => console.log('a'))()
] = [
  (_ => console.log('c'))()
];   // 'c' 'a'

打印顺序是 c a,说明是没有对应值时才去拿默认值,仔细想想很合理,只有没有对应值时才需要去计算默认值,先计算默认值会造成多余的计算

单个值的情况清楚了,那多个值呢?

let [
  x = (_ => console.log('a'))(),
  y = (_ => console.log('b'))(),
] = [
  (_ => console.log('c'))(),
  (_ => console.log('d'))(),
];   // 'c' 'd' 'a' 'b'

跟我想象的又不一样,我以为会是 c a d b,仔细想想,好像是因为忘了基本的原则:等号右边的先计算。

再看个例子:

let [
  x,
  y,
] = [
  1,
  (_ => console.log(x))(),
];   // x is not defined

相关文章

  • JS - 做个小实验,看看『解构赋值』的求值顺序

    上面这条语句的运行结果和我想象的不太一样,我以为的顺序是: 那这个表达式的计算顺序究竟是怎样的呢?看下面: 打印顺...

  • JS连续赋值与求值顺序

    原文来自:https://www.cnblogs.com/morongwendao/p/6473095.html

  • JS基础:ES6关于基本语法的一些扩展

    目录一. 解构赋值 1. 数组的解构赋值 2. JS对象的解构赋值 3. 解构赋值的应用场景二. 字符串的扩展 1...

  • 【转+自我理解】ES6——解构赋值

    原文链接:小邵教你玩转ES6 解构赋值 解构赋值主要分为对象的解构和数组的解构,在没有解构赋值的时候,我们赋值是这...

  • ES6 2.解构赋值

    解构赋值 解构赋值的分类 数组解构赋值 对象解构赋值 字符串解构赋值 布尔值解构赋值 函数参数解构赋值 数值解构赋...

  • 变量的解构赋值

    本文通过学习阮一峰的博客,外加自己的理解,整理了一下我对js变量的解构赋值的理解。 数组的解构赋值 对象的解构赋值...

  • ES6新特性有哪些?快来看看吧(二)

    昨天讲到ES6中新增的let 和 const 今天来看看别的吧; 今天讲一下解构赋值: 什么解构赋值? 解构赋值就...

  • ES6 语法(解构赋值)

    什么是解构赋值及用法 解构赋值分类:数组解构赋值对象解构赋值字符串解构赋值布尔值解构赋值函数参数解构赋值数值解构赋...

  • JS解构赋值

  • js解构赋值

    解构:按照一定模式,从数组和对象中提取值,对变量进行赋值。如果解构不成功,变量的值就等于undefined 数组解...

网友评论

      本文标题:JS - 做个小实验,看看『解构赋值』的求值顺序

      本文链接:https://www.haomeiwen.com/subject/nywxnftx.html