Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-使用解构和扩展语法是否比使用预构建函数更有效?_Javascript_Performance_Destructuring_Spread Syntax - Fatal编程技术网

Javascript-使用解构和扩展语法是否比使用预构建函数更有效?

Javascript-使用解构和扩展语法是否比使用预构建函数更有效?,javascript,performance,destructuring,spread-syntax,Javascript,Performance,Destructuring,Spread Syntax,在阅读MDN关于解构的文档时,我发现它可以减少许多包含赋值的代码行。对于扩展变量,它的使用方式与Haskell的模式匹配相同。例如,以下三个功能几乎相等: let tail' (x:xs) = xs -- Haskell 输入为空列表时出现异常 *将空数组作为输入时返回空数组 下面是另一个例子: let conc = (a1,a2)=>[...a1,...a2]; // returns the same than... let conc = (a1,a2)=>a1.concat(a

在阅读MDN关于解构的文档时,我发现它可以减少许多包含赋值的代码行。对于扩展变量,它的使用方式与Haskell的模式匹配相同。例如,以下三个功能几乎相等:

let tail' (x:xs) = xs -- Haskell
输入为空列表时出现异常

*将空数组作为输入时返回空数组

下面是另一个例子:

let conc = (a1,a2)=>[...a1,...a2]; // returns the same than...
let conc = (a1,a2)=>a1.concat(a2);

哪个是
conc
函数的最有效实现?

性能差异可以忽略不计,因为它们都将使用普通javascript逻辑来实现连接。一种情况可能需要执行更多的语句,但Javascript非常快,因此可以忽略不计,您无需担心。您可以对其进行基准测试,但实际上,除非您在数千或数百万次迭代的循环中执行此操作,您可能不会注意到任何差异性能差异可以忽略不计,因为它们都将使用普通javascript逻辑来实现连接。有一种情况可能需要执行更多的语句,但Javascript非常快,因此可以忽略不计,您无需担心。您可以对其进行基准测试,但实际上,除非您在数千或数百万次迭代的循环中执行此操作,否则您可能不会注意到任何差异
let tail = (xs)=>xs.slice(1) // * Javascript [ECMAScript 3rd ed.+]
let conc = (a1,a2)=>[...a1,...a2]; // returns the same than...
let conc = (a1,a2)=>a1.concat(a2);