【发布时间】:2019-05-15 04:55:00
【问题描述】:
我已经通过 FCC 学习 Javascript 6 周了,并决定花一周时间学习,并尝试使用方法来真正接近和舒适地在循环和语句中使用它们。只是在玩弦乐,我试图用“我喜欢丝绸”代替弦乐“我喜欢牛奶”。我的代码实现了这一点,我理解它,但我决定添加一个|| 运算符,结果让我感到困惑。如果我说if(x[i]=== 'm' || x[i] === 'I',它不会替换'I',而是替换'm' 如果我保留它在原始代码中的方式,它会生成字符串'I lise milk',即使从未提及'k' .怎么回事?
let x = 'Hello I like milk';
let y = '';
for(let i = 0; i < x.length; i++) {
if(x[i] === 'm' || 'I') {
y = x.replace(x[i], 's' )
}
}
console.log(y)
【问题讨论】:
-
表达式
x[i] === 'm' || 'I'始终为真。它首先检查x[i]=== 'm',它可能是真或假,然后你有一个“或”运算符,然后是字符串文字'I'。该字符串文字始终为真,因此“或”运算符的计算结果为真,因此它始终为真。 -
我完全理解这一点,前几天犯了那个错误并吸取了教训。我很困惑为什么它完全取代了'k'?正如您在我的问题中看到的那样,我已经尝试修复它,但它仍然没有替换“I”,而是替换了“m”,即使“I”在索引中排在第一位。
标签: javascript string methods logical-operators