【问题标题】:javascript = vs == with if and else statements [closed]javascript = vs == 带有 if 和 else 语句 [关闭]
【发布时间】:2020-04-23 20:49:19
【问题描述】:

我有一个变量 var stIm = '';,我正在尝试将它放入 if 和 else 语句中。

当我有

if (stIm = ''){}else{} 它只运行 if 部分

if (stIm == ''){}else{} 它只运行 else 部分

有谁知道如何解决这个问题? === 有效吗?

【问题讨论】:

标签: javascript if-statement variables boolean


【解决方案1】:

第一个

var stIm = '';

if (stIm = '') { // assignment with a falsy value
    console.log('if');
} else {
    console.log('else');
}

分配一个falsy 值(如undefined、null、0、false、空字符串'')并转到else 部分。

但第二个有效。

var stIm = '';

if (stIm == '') {
    console.log('if');
} else {
    console.log('else');
}

但最好使用Identity/strict equality operator ===,它不会强制值并首先按类型检查左右操作数,然后按值检查。

【讨论】:

  • 我认为如果 OP 不知道 = 和 == 之间的区别,那么他们可能不知道您所说的“虚假”是什么意思。
【解决方案2】:

首先如果 if (stIm = ''){ console.log('yes'); }else{console.log('no');} 告诉“编译器”,变量stIm取''(空字符串值),如果(空字符串)为false,控制台将打印“no”并将执行 else 语句。

第二个 if,尝试比较 2 个空字符串,这将返回 true。控制台会显示“是”。

=== 等于将返回相同的 true,因为将比较 2 个空字符串。

【讨论】:

    【解决方案3】:

    您需要使用 === 执行深度相等检查。 == 只比较值。所以 2 == "2" 是真的。但是,2 === "2" 是错误的。 === 比较值和类型。

    所以你可以写:

    if(stIm === ""){
    return stuff
    }
    return otherStuff

    如果在 if 语句中写“return”,则不需要 else。更快的方法是使用三元条件:

    stIm === "" ? stuff : otherStuff

    【讨论】:

    • 2 = "2" 不是你想象的那样。
    • 是的,我打字太快,忘记了“=”。我的意思是 2=="2" 是真的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2016-10-15
    • 1970-01-01
    • 2021-09-11
    • 2018-03-29
    • 2014-08-12
    相关资源
    最近更新 更多