例如:
function makeFunc(a,b,c,d,e) {
return () => {
if (a) { /* do something expensive not referencing b,c,d,e */ }
if (b) { /* do something expensive not referencing a,c,d,e */ }
if (c) { /* do something expensive not referencing a,b,d,e */ }
if (d) { /* do something expensive not referencing a,b,c,e */ }
if (e) { /* do something expensive not referencing a,b,c,d */ }
}
}
const func = makeFunc(true, false, false, false, false)
for ( let i=0; i < 100_000; i++) func()
我希望,在这个例子中,V8 能够优化if (x)
闭包上的测试,只发出
/* do something expensive not referencing b,c,d,e */
if (a)
执行100,000次之后。