相关疑难解决方法(0)

ES2015/ES6中的Spread语法与Rest参数

我对ES2015中的spread语法和rest参数感到困惑.任何人都能用适当的例子来解释它们之间的区别吗?

javascript variadic-functions ecmascript-6 spread-syntax

55
推荐指数
5
解决办法
2万
查看次数

ECMAScript文档中的SpreadElement是什么?它与MDN上的Spread语法相同吗?

ECMAScript规范SpreadElement描述

SpreadElement[Yield]:
...AssignmentExpression[In, ?Yield]
Run Code Online (Sandbox Code Playgroud)

这与Spread语法相同

扩展语法允许在可能需要零个或多个参数(用于函数调用)或元素(用于数组文字)的位置扩展数组表达式或字符串等可迭代的值,或者在零或更多的位置扩展对象表达式键值对(对象文字)是预期的.

句法

对于函数调用:

myFunction(...iterableObj);
Run Code Online (Sandbox Code Playgroud)

对于数组文字:

[...iterableObj, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

MDN文档中描述?

什么是SpreadElement和/或扩展语法的用例; 如果SpreadElement和传播语法不同,它们的具体方式有何不同?

javascript ecmascript-6 spread-syntax

42
推荐指数
1
解决办法
3733
查看次数

在javascript中分配新数组

尝试使用值分配新数组.

情况1 :

var x = new Array(3).map(()=>1);
Run Code Online (Sandbox Code Playgroud)

现在x[undefined * 3]

案例2:

var x = [...new Array(3)].map(()=>1);
Run Code Online (Sandbox Code Playgroud)

现在x[1,1,1]

有人可以帮忙吗?

为什么使用这个扩展运算符会产生这样的差异

为什么案例1 不起作用

javascript arrays

8
推荐指数
2
解决办法
762
查看次数

使用扩展运算符的ES6对象克隆也在修改输入

我有一个相当深的interface声明,看起来像这样:

export interface Job {
    JobId: JobId; // type JobId = string
    UserId: UserId; // type UserId = string
    JobName: string;
    AudioFile: JobAudioFile; // this is an interface
    Status: JobStatus; // this is an enum
    Tracks: JobTracks[]; // 'JobTracks' is an enum
    Results: JobResults; // this is an interface
    Timestamps: JobTimestamps // interface
  }
Run Code Online (Sandbox Code Playgroud)

这个接口的大多数成员本身就是接口,一般架构遵循这种使用枚举,字符串,数组和更多接口的模式.所有代码都是作为TypeScript编写的,编译成JS并作为JS上传到AWS.(节点8.10正在AWS上运行)

在代码中的某一点,我需要制作一个Job作为函数参数传入的实例化的深层副本:

export const StartPipeline: Handler = async (
  event: PipelineEvent
): Promise<PipelineEvent> => {
  console.log('StartPipeline Event: %o', event);

  const newBucket = …
Run Code Online (Sandbox Code Playgroud)

javascript typescript ecmascript-6

3
推荐指数
1
解决办法
119
查看次数

为什么我们不能在 Array.map() 中使用展开运算符以及展平数组数组的替代方法是什么?

这是我尝试过的:

let a = [[1,2], [3,4]];

a.map(val => ...val)
// => SyntaxError: expected expression, got '...'
// Expected output: [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

我尝试使用明确的return声明和带有括号的周围值,但没有任何效果......

我只是想知道是否有一种简单的方法来返回“扩展数组”?

编辑:现在我已经看到了这个问题,它对扩展运算符的工作原理有精确的了解,尽管它并没有真正回答如何“展平”数组的问题(我修改了问题的标题)。

javascript spread-syntax

3
推荐指数
1
解决办法
2006
查看次数

使用ES6扩展运算符实现道具语法

我在React应用程序中注意到以下内容:

<UserList
  {...{ userIdsTyping, users }}
/>
Run Code Online (Sandbox Code Playgroud)

到底在{...{ userIdsTyping, users }}做什么?我知道它将子节点传递给UserList组件,但是传播运算符如何在这里工作?它有什么作用userIdsTypingusers

javascript ecmascript-6 reactjs

1
推荐指数
1
解决办法
466
查看次数

使用Float和布尔变量传播运算符问题

Spread Operator抛出float和boolean变量的错误.在float和boolean变量上获取错误是否有任何特定原因.

// Works, Array Variable
'use strict';

let aVal = [1, 2, 3];
console.log(...aVal);

// Works, String Variable
'use strict';

let sVal = 'String';
console.log(...sVal);

// throws error, Integer Variable
'use strict';

let iVal = 1234567890;
console.log(...iVal);

// throws error, Float Variable
'use strict';

let fVal = 99.45;
console.log(...fVal);

// throws error, Boolean Variable
'use strict';

let bVal = true;
console.log(...bVal);
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

0
推荐指数
1
解决办法
599
查看次数