类型胁迫在有条件的情况下更危险吗?

Is type coercion more dangerous inside a conditional?

本文关键字:危险 情况下 有条件 类型      更新时间:2023-09-26

我刚刚在一篇博客文章中读到了这一点:

如果要强制值,请在条件之外而不是条件内执行此操作。

我很好奇。在 Javascript 中,在条件中使用类型强制比在条件之外使用类型强制更糟糕吗?有副作用吗?

示例代码:

var initInt = 1
, initString = '1'
// Outside of a conditional
var coerceType = initInt == initString
if (coerceType === true) { 
  console.log('True') 
}
// Inside of a conditional
if (initInt == initString) { 
  console.log('True') 
}

似乎他们的观点只是你不应该使用==来进行类型转换(或者根本不应该使用,就此而言)。

在条件中使用类型强制是可以的,只要非常清楚发生了什么:

if (myNum === +myNumString)

但是==运算符有很多古怪、不一致且难以记住的行为,如该博客文章中所述。

正是出于这个原因,很多人建议根本不使用 == 运算符。

延伸阅读