繁体   English   中英

解构变量和函数体变量部分的区别

[英]Difference between de-structured variables and variables part of a function body

在函数创建期间变量实例化的以下策略(解构与主体的一部分)期间变量之间是否有任何差异:

let obj = {z: {y: 99}}
let foo = ({z: {y}, x = `${y+1}`}) => console.log(x) //prints 100
let bar = (data) => {
    let y = data.z.y;
    let x = `${y+1}`;
    console.log(x);  //also prints 100
}
foo(obj);
bar(obj);

据我所知,这两种方法都会创建两个变量,但我想知道哪种方法在速度和内存方面更胜一筹。

无法确定在最短的时间内完成的方法。 堆栈片段和console调用似乎也会影响结果。

 let obj = { z: { y: 99 } }; console.profile("foo"); let foo = ({z: {y},x = `${y+1}`}) => console.log() //prints 100 foo(obj); console.profileEnd("foo"); console.profile("bar"); let bar = (data) => { let y = data.zy; let x = `${y+1}`; console.log(); //also prints 100 } bar(obj); console.profileEnd("bar"); let res = { foo:null, bar:null } res.foo = new Date().getTime(); console.time("foo"); for (let i = 0; i < 100; i++) { foo(obj); } console.timeEnd("foo"); res.foo = new Date().getTime() - res.foo; res.bar = new Date().getTime(); console.time("bar"); for (let i = 0; i < 100; i++) { bar(obj); } console.timeEnd("bar"); res.bar = new Date().getTime() - res.bar; console.log(JSON.stringify(res, null, 2));

 let obj = { z: { y: 99 } }; console.profile("foo"); let foo = ({z: {y},x = `${y+1}`}) => x; //prints 100 foo(obj); console.profileEnd("foo"); console.profile("bar"); let bar = (data) => {let y = data.zy; let x = `${y+1}`; return x; //also prints 100 } bar(obj); console.profileEnd("bar"); console.time("foo"); for (let i = 0; i < 100; i++) { foo(obj); } console.timeEnd("foo"); console.time("bar"); for (let i = 0; i < 100; i++) { bar(obj); } console.timeEnd("bar");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM