javascript - 在 if 条件语句中分配变量,好习惯与否?

标签 javascript

<分区>

一年前,我从 Java 等经典的 OO 语言转向了 JavaScript。在 Java 中绝对不推荐(甚至不正确)以下代码:

if(dayNumber = getClickedDayNumber(dayInfo))
{
    alert("day number found : " + dayNumber);
}
function getClickedDayNumber(dayInfo)
{
    dayNumber = dayInfo.indexOf("fc-day");
    if(dayNumber != -1) //substring found
    {
        //normally any calendar month consists of "40" days, so this will definitely pick up its day number.
        return parseInt(dayInfo.substring(dayNumber+6, dayNumber+8));
    }
    return false;
}

基本上我只是发现我可以在 if 条件语句中将一个变量赋值给一个值,并立即检查赋值,就好像它是 bool 值一样。

为了更安全,我通常将它分成两行代码,先赋值然后检查变量,但现在我发现了这一点,我只是想知道在有经验的 JavaScript 开发人员眼中这是否是一种好的做法?

最佳答案

我不会推荐它。问题是,它看起来像一个常见错误,您尝试比较值,但使用单个 = 而不是 =====。例如,当你看到这个时:

if (value = someFunction()) {
    ...
}

你不知道那是他们的本意,还是他们打算这样写:

if (value == someFunction()) {
    ...
}

如果您真的想就地进行分配,我建议您也进行显式比较:

if ((value = someFunction()) === <whatever truthy value you are expecting>) {
    ...
}

关于javascript - 在 if 条件语句中分配变量,好习惯与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576571/

相关文章:

javascript - 如何从 Controller 呈现两种类型的数据以在 node.js 中查看?

javascript - Parsley.js - 密码验证未提交

javascript - 为什么这段代码会导致 IE 内存泄漏?

javascript - 获取 Monaco Editor 的值(value)

c# - Asp.Net 中新窗口中的 Response.Redirect()

javascript - CSS/JavaScript 使用 Div 使页面部分变灰

javascript - 从 Amazon、eBay 等网站提取 .ico 图标

javascript - jQuery Keithwood 日历插件

javascript - 如何使用 Protractor 测试比较具有 getSize() 函数的元素的宽度和高度?

javascript - 使用javascript在Enter键上提交表单