问题描述
以下示例中的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语句对其没有任何影响,也不会真正带来任何实际的性能优势。