同一个匿名变量是否计算了两次

问题描述 投票:0回答:1

我有一个像这样的想象中的Javascript代码

let z = 99999;
if (str.lastIndexOf('_') !== -1)
  z = str.lastIndexOf('_');     
}

这段代码:

str.lastIndexOf('_')
会被计算两次吗?
或者因此:
z = str.lastIndexOf('_') !== -1 ? str.lastIndexOf('_') !== -1 : 99999
;

如果要计算两次,是否意味着最好的方法是将

str.lastIndexOf('_')
放入单独的变量中并在条件中使用它?

我想知道故意忽略执行模式 可以通过词汇目的来证明。

javascript variables redundancy
1个回答
0
投票

我们可以通过覆盖来测试

lastIndexOf

const orig = String.prototype.lastIndexOf
String.prototype.lastIndexOf = function(...args) {
  console.log('running lastIndexOf')
  orig.call(this, ...args);
}

const str = '31231231231312_1312312'
let z = 99999;
if (str.lastIndexOf('_') !== -1) {
  z = str.lastIndexOf('_');     
}

如您所见,打印了 2 次

© www.soinside.com 2019 - 2024. All rights reserved.