如果存在价值,请执行此操作。未定义与空?

If value exists, do this. undefined vs null?

我想在点击按钮时呈现特定的动作。

条件是: (如果输入字段中存在值,则写入 'value exists'。如果值不存在,则警告)。

我尝试用 null 替换 undefined。 我还尝试替换运算符 === 和 ==。 None 有效!请帮忙。

<html>
<head>

</head>
<body>

<input id='typer' type='text'></input>
<button onclick='hey()'>click</button>

<p id='pw'></p>

<script>

var pw
pw = document.querySelector('#pw');

function hey() {
    if (document.getElementById('typer').value !== undefined) {
        pw.innerHTML = 'value exists';
    } else {
        alert('value does not exists');
    }
}

</script>
</body>
</html>

nullundefined和一个空字符串("")都是JavaScript中的'falsey'值;这意味着如果将它们传递给 ! 运算符,结果将是 true。您可以通过 运行 !("")!(null) 或(对于 undefined)通过定义 var x; 然后调用 !x 在您的控制台中对此进行测试.

此外,if 语句实际上并不检查其条件是否等于 true,它检查条件是否为 'truthy'(即计算结果为 false 当通过 !).

因此,您需要做的就是将 if 语句的条件设置为 document.getElementById('typer').value,因为只要元素的值不为 null、undefined 或空string(或 false,也是假的),条件为真。

对于<input type="text">documentation声明其.value属性的类型是DOMString

DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.

这意味着.value永远不会是nullundefined;有了这些知识,当你想知道一个值是否存在时,你可以做两件事:

  1. 使用value.length判断字符串是否为空
  2. if 语句中使用 value!value 本身来分别确定它是存在还是为空(空字符串的计算结果为 false,而非空字符串计算结果为 true)