发表于: 2019-12-15 23:45:25

1 1178


今日完成的事

调试接口

明日计划的事

调试接口

收获

 JS 不良编码习惯

不要使用隐式类型转换

JavaScript是一种松散类型的语言。 如果使用得当,这是一个好处,因为它给你带来了灵活性。

大多数运算符+ - * / ==(不包括 ===)在处理不同类型的操作数时会进行隐式转换。

语句if(condition){...},while(condition){...}隐式地将条件转换为布尔值。

下面的示例依赖于类型的隐式转换,这种有时候会让人感到很困惑:

过度依赖隐式类型转换是一个坏习惯。 首先,它使你的代码在边缘情况下不太稳定。 其次,增加了引入难以重现和修复的bug的机会。

现在咱们实现一个获取对象属性的函数。如果属性不存在,函数返回一个默认值

getProp() 读取name属性的值,即'Batman'。

那么试图访问isVillian属性:

这是一个错误。即使 hero 的属性isVillian为false,函数getProp()也会返回错误的true。

这是因为属性存在的验证依赖于if(!object [propertyName]){...}隐式转换的布尔值。

这些错误很难发现,要修复该函数,就要明确验证值的类型:


object[propertyName] === undefined确切地验证属性是否为undefined。

这里建议避免直接使用undefined。 因此,上述解决方案可以进一步改进:

尽可能不要使用隐式类型转换。相反,请确保变量和函数参数始终具有相同的类型,必要时使用显式类型转换。

最佳实践列表:

始终使用严格的相等运算符===进行比较

不要使用松散等式运算符==

加法运算符 operand1 + operand2:两个操作数应该是数字或字符串

算术运算符 - * /%**:两个操作数都应该是数字

if(condition){...},while(condition){...}等语句:condition 必须是一个布尔类型值



返回列表 返回列表
评论

    分享到