有==和!=变成不好的做法?

时间:2017-06-29 22:53:29

标签: javascript type-conversion operators warnings equality

几个月后,我的IDE(WebStorm)突出显示了JavaScript正则相等运算符,并出现以下警告:

if(parseInt(val) == val) // val can be safely converted to int

我知道两个操作员的不同行为,我倾向于使用它们,因为它们的行为不同,例如。对于延迟类型转换:

==

但是,IDE正在向所有出现if(parseInt(val).toString() === val) // be happy webstorm 添加警告,因此上面的感觉不再。我可以将所有这些部分转换成更不易读的东西:

private void updateStatusBarColour(int tabPosition) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

        switch (tabPosition) {
            case FIRST_TAB:
            case SECOND_TAB:
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    mRootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
                }
                window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimaryLight));
                break;
            case THIRD_TAB:
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    mRootView.setSystemUiVisibility(0);
                }
                window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimary));
                break;
            case FOURTH_TAB:
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    mRootView.setSystemUiVisibility(0);
                }
                window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorDarkTan));
                break;
        }
    }
}

这真的是要走的路吗?或者我应该忽略/禁用这些警告?

2 个答案:

答案 0 :(得分:3)

是的,近二十年来这是最好的做法。

警告很明确(甚至解释为什么它已经到位),你会在JavaScript书籍中以及在网络上找到相同的建议。

所以,我无法理解为什么你会考虑忽略甚至禁用它。

您可以在此处找到有关何时选择==以及何时选择===的详细信息:

答案 1 :(得分:2)

我认为任何形式的类型强制,如果在运行时可能不知道的类型出乎意料(如任何动态语言)是不好的做法。

例如,这些都是真实的:

 "0" == false
 "0"

虽然这是假的:

 false