冗余 if 语句?

Redundant if statement?

下面例子中的if语句是否多余?

if (str[0] === ' ') {
  str = str.trimStart()
}

对我来说似乎没有必要,因为 trimStart() 似乎对开头没有 space 的字符串没有任何负面影响。此外,如果字符串的开头确实有一个 space,那么您的 运行 操作次数是所需次数的两倍。

在上述情况下是否需要 if 语句?

if不是必需的,但是你应该把修剪后的值保存在某个地方,比如

str = str.trimStart();

-- 编辑--

“是否需要 'if'...?”

你在原来做的测试是多余的。但是你可能想检查 str 是否有一个值 and/or 在调用 trimStart() 之前检查这个值是否是一个字符串,比如

if (str && typeof str === 'string') ...

鉴于编辑后的代码,if 语句在一种情况下可能有用 - 如果字符串以换行符开头(算作白色 space,并且会被修剪),则不是一个普通的 space。例如:

const parseStr = (str) => {
  if (str[0] === ' ') {
    str = str.trimStart()
  }
  console.log(str.length);
};
parseStr('\nfoo');
parseStr(' foo');
parseStr('foo');

如果trimStart被无条件调用,换行符将被裁剪,不管:

const parseStr = (str) => {
  str = str.trimStart()
  console.log(str.length);
};
parseStr('\nfoo');
parseStr(' foo');
parseStr('foo');

if 块不是必需的,因为如果字符串开头没有 space,trimStart 函数将不会产生任何效果。使用 if 语句对其没有任何影响,也不会有任何真正的性能优势。