标签: spread-syntax

C#中的JavaScript扩展语法

在C#中是否有像JavaScript的扩展语法一样的实现?

var arr = new []{
   "1",
   "2"//...
};

Console.WriteLine(...arr);
Run Code Online (Sandbox Code Playgroud)

javascript c# spread-syntax

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

Javascript ES6在undefined上传播运算符

在开发我的反应程序,我需要一个条件道具发送到一个组件,所以我在什么地方找到一个模式来做到这一点,但它似乎很奇怪,我和我无法理解如何以及为什么它的工作.

如果我输入:

console.log(...undefined)   // Error 
console.log([...undefined]) // Error
console.log({...undefined}) // Work
Run Code Online (Sandbox Code Playgroud)

在未定义时激活扩展运算符时会引发错误,但是当undefined在对象内部时,会返回一个空对象.

我对这种行为感到非常惊讶,这真的是它应该如何,我能依靠这个并且这是一个好习惯吗?

javascript javascript-objects ecmascript-6 spread-syntax

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

在数组与对象中传播未定义

为什么在对象中传播undefined会返回一个空对象?{...undefined} // equals {}:

console.log({...undefined})
Run Code Online (Sandbox Code Playgroud)

为什么在数组中传播未定义会给出错误? [...undefined] // type error:

console.log([...undefined])
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 spread-syntax

24
推荐指数
2
解决办法
3556
查看次数

数组声明中的PHP Spread运算符

PHP支持可变参数的扩展运算符.

在JavaScript中,您可以使用spread运算符来执行此操作:

var a = [1, 2];
var b = [...a, 3, 4];
console.log(b); // [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

但是,尝试在PHP中执行此操作:

$a = [1, 2];
$b = [...$a, 3, 4];
var_dump($b);die;
Run Code Online (Sandbox Code Playgroud)

结果出现此错误:

解析错误:语法错误,意外'...'(T_ELLIPSIS),期待']'

在PHP中不允许使用这种方式使用扩展运算符吗?如果是这样,是否有同样优雅的方式来达到同样的效果?

php arrays variadic-functions spread-syntax

22
推荐指数
4
解决办法
2万
查看次数

在处理数组时,使用扩展语法(...)和push.apply之间的区别

我有两个数组,

const pets = ["dog", "cat", "hamster"]

const wishlist = ["bird", "snake"]
Run Code Online (Sandbox Code Playgroud)

我要附加wishlistpets,可以使用两种方法来完成,

方法1:

pets.push.apply(pets,wishlist)
Run Code Online (Sandbox Code Playgroud)

结果如下: [ 'dog', 'cat', 'hamster', 'bird', 'snake' ]

方法2:

pets.push(...wishlist)
Run Code Online (Sandbox Code Playgroud)

这也导致: [ 'dog', 'cat', 'hamster', 'bird', 'snake' ]

当我处理更大的数据时,这两种方法在性能方面是否存在差异?

javascript arrays apply ecmascript-6 spread-syntax

21
推荐指数
4
解决办法
8316
查看次数

在打字稿函数中传播数组:错误 TS2556

我正在尝试在打字稿函数调用上使用扩展运算符,如下所示:

function foo(x: number, y: number, z: number) {
  console.log(x + y + z);
}
const args = [0, 1, 2];
foo(...args);
Run Code Online (Sandbox Code Playgroud)

但在编译时,我收到错误:“扩展参数必须具有元组类型或传递给剩余参数”(TS2556)。我究竟做错了什么?

附录:当我的参数是动态数组时,如何解决这个问题,如

const args = new Array(3).map(() => Math.random());
Run Code Online (Sandbox Code Playgroud)

typescript spread-syntax

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

在javascript中多次使用spread运算符?

为什么不能多次使用传播运算符?

let arr = [[[1, 2, 3]]];

console.log(arr); // Array [ Array[1] ]
console.log(...arr); // Array [ Array[3] ]
console.log(...(...arr));
// SyntaxError: expected '=>' after argument list, got ')'
Run Code Online (Sandbox Code Playgroud)

我希望:

console.log(...(...arr)); // Array [ 1, 2, 3 ]
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 spread-syntax

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

在javascript es6中使用... spread语法命名为exports

我试图从库中导入所有内容作为哈希,修改它,并重新导出修改后的哈希,而不知道库中的所有命名导出.例如:

import * as reactBootstrap from 'react-bootstrap';

wrappedReactBootstrap = doFunnyThingsTo(reactBootstrap);

export {
  ...wrappedReactBootstrap
};

// or
export wrappedReactBootstrap;
Run Code Online (Sandbox Code Playgroud)

我对https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export的理解是规范不允许以下内容.有人可以证实吗?

显然,循环是不可能的,因为导出和导入语句必须是顶级的.

javascript babel ecmascript-6 spread-syntax ecmascript-next

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

使用spread运算符更新对象值

我有一个函数,它为传入的对象添加一个键,但我被告知使用传播运算符,我被告知我可以使用spread运算符创建一个具有相同属性的新对象,然后在其上设置isAvailable .

  return new Partner(ServerConfig, capabilities, initialState)
}

class Partner {
  constructor (ServerConfig, capabilities, initialState) {
    initialState.isAvailable = true
Run Code Online (Sandbox Code Playgroud)

所以我尝试了类似的东西但是成功了,你能帮助我吗?并且困惑,我应该以这种方式使用spread运算符,从函数返回?

newObject = {}

//在函数中使用它并从return中获取值

   return {
     value: {
       ...newObject,
       ...initialState
     }
   }
Run Code Online (Sandbox Code Playgroud)

initialState.isAvailable = true

javascript spread-syntax

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

为什么 VSCode 无法识别 JavaScript 展开运算符并自动完成?

我最近一直在为 Visual Studio Code 的一个非常烦人的行为而苦苦挣扎。

每当我尝试使用 JavaScript扩展语法时, VSCode 会自动自动完成下一段代码(错误地)。注意我没有打TAB。这是我正在谈论的内容的演示:

烦人的自动完成行为演示

有没有办法禁用它?这真的让我发疯......我正在使用Visual Studio Code 1.59.0(这应该是创作这个问题时的最新版本)。

javascript intellisense autocomplete spread-syntax visual-studio-code

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