Javascript-使用解构和扩展语法是否比使用预构建函数更有效?
在阅读MDN关于解构的文档时,我发现它可以减少许多包含赋值的代码行。对于扩展变量,它的使用方式与Haskell的模式匹配相同。例如,以下三个功能几乎相等: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
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);