而这边 JavaScript 也有所谓的型别转换,例如原本的 string 变成 number

因此 JavaScript 有两个很危险的陷阱,也就是显性的转换(Explicit conversion)以及隐性的转换(Implicit conversion)。

当我们无法确定型别时,其实在开发时会有很严重的问题发生,也就是 bug,我们会无法确认变数的型别,而显性的转换简单来讲就是你可以看到的转换,以上面的范例来讲,我们从程式码可以推断出它转换成了 number 接下来又因为重新赋予值转换成 string,这就是所谓的显性转换。

通常来讲我们可能会认知为 2,但是相信你看这一篇文章应该会疑惑 number 要怎么跟 string 相加?因此这时候 JavaScript 就会很鸡婆的依照一些规则帮你做型别转换,例如加号运算子的规则是当“number 遇到 string 时,number 会被转换成 string”,因此 a + '1'; 会变成 11,并且是一个字串。

而这就是所谓的隐性转换。

当我们可以理解这些规则后也就可以避免一些开发上的 bug。