如果语句多余?

问题描述

以下示例中的if语句是否多余?

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

对我来说似乎没有必要,因为trimstart()似乎对开头没有空格的字符串没有任何负面影响。此外,如果字符串的开头确实有空格,则说明您正在运行的操作是所需次数的两倍。

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

解决方法

鉴于已编辑的代码,在一种情况下,if语句可能会很有用-如果字符串以换行符开头(算作空格,将被修剪),而不是纯空格。例如:

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不是必需的,但是您应该将修剪后的值保存在某个地方,例如

str = str.trimStart();

-编辑-

“是否有必要...?”

您在原件中进行的测试是多余的。但是您可能想要在调用trimStart()之前检查str是否具有值和/或检查该值是否为字符串,例如

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

if块不是必需的,因为如果字符串的开头没有空格,trimStart函数将不会起作用。拥有if语句对其没有任何影响,也不会真正带来任何实际的性能优势。