JavaScript 如何检查空/未定义/空字符串
在JavaScript中,””表示空字符串,我们可以使用null关键字初始化字符串为null值。如果我们没有给任何变量赋值,它默认为undefined。
有时,当处理字符串时,我们需要检查字符串是否为空,未定义或null。例如,我们通过HTML表单从用户获取详细信息,用户可以在输入字段中添加空字符串;我们需要验证输入字段并向用户显示错误消息。
在本教程中,我们将学习三种方法来检查字符串是否为空、null或未定义。
使用字符串的trim()方法和length属性
字符串的trim()方法允许我们从字符串开头移除空格。因此,我们可以移除字符串开头的空格。然后,我们可以检查字符串的长度是否为零,字符串可能是空的、null的或未定义的。
语法
用户可以按照下面的语法,使用字符串的trim()方法和length()属性来检查空、未定义或null字符串。
let string1 = " ";
string1 = string1.trim();
if (string1.length == 0) {
// string is empty
}
示例
在下面的示例中,我们创建了两个不同的字符串。一个是空的,另一个只包含空格。用户可以在输出中看到,我们的逻辑显示两个字符串都是空的,因为第二个字符串只包含空格。
<html>
<body>
<h3> Using the<i> string.trim() method and string.length() </i> property to check whether a string is null, undefined, or empty. </h3>
<p id = "output"> </p>
<script>
let output = document.getElementById("output");
let string1 = "";
let string2 = " ";
string1 = string1.trim();
string2 = string2.trim();
if (string1.length == 0) {
output.innerHTML += "The string1 is empty! </br>";
}
if (string2.length == 0) {
output.innerHTML += "The string2 is empty! </br>";
}
</script>
</body>
</html>
将字符串转换为布尔值并检查是否为空、未定义或null
我们可以使用Boolean构造函数或双重否定运算符(!!)将字符串转换为布尔值。当我们将任何变量转换为布尔值时,它会将所有假值映射为false,其他值映射为true。在JavaScript中,空字符串、null和undefined都是假值,因此当我们将它们转换为布尔值时,Boolean()构造函数始终返回false。
语法
在下面的语法中,我们使用Boolean()构造函数将字符串转换为布尔值并检查它是否为空。
let string3 = undefined;
if (Boolean(string3) == false) {
// string3 is either null, empty, or undefined
}
示例
我们在下面的示例中转换了包含空、null和undefined值的三个字符串。此外,我们还创建了isValid()函数,它以字符串为参数并将字符串转换为布尔值。然后,我们检查从Boolean()构造函数返回的字符串的值是true还是false。
<html>
<body>
<h3> Converting the<i> string to boolean </i> to check whether a string is null, undefined, or empty. </h3>
<p id = "output"> </p>
<script>
let output = document.getElementById("output");
let str1 = "";
let str2 = null;
let str3 = undefined;
function isValid(str) {
if (Boolean(str)) {
output.innerHTML += "The " + str + " is valid <br/>";
} else {
output.innerHTML += "The " + str + " is not valid <br/>";
}
}
isValid(str1);
isValid(str2);
isValid(str3);
isValid("Hello");
</script>
</body>
</html>
在上述输出中,用户可以观察到布尔构造函数对于空、null和undefined字符串返回false,并对”Hello”字符串返回true。
使用严格相等运算符
严格相等运算符允许我们比较两个变量的值,并且它还会比较变量的类型。在这里,我们将把我们的字符串与””、null和undefined进行比较。此外,我们将使用OR运算符将所有三个条件一起用于单个if条件中。
如果任何一个条件为true,那就意味着字符串不合法。
语法
用户可以按照以下语法使用严格相等运算符来检查字符串是否为空、null或undefined。
if (str === "" || str === null || str === undefined) {
// string is not valid
} else {
// string is valid
}
示例
在下面的示例中,isValid()函数包含了if-else语句,用于检查字符串是否有效。正如在语法中讨论的那样,我们在if语句的条件中使用了OR运算符,同时检查是否为空、null和未定义的字符串。
<html>
<body>
<h3> Using the<i> strict equality operator </i> to check whether string is null, undefined or empty.</h3>
<p id = "output"> </p>
<script>
let output = document.getElementById("output");
function isValid(str) {
if (str === "" || str === null || str === undefined) {
output.innerHTML += "The " + str + " is not valid <br/>";
} else {
output.innerHTML += "The " + str + " is valid <br/>";
}
}
isValid(null);
isValid(undefined);
isValid("TutorialsPoint");
</script>
</body>
</html>
用户学到了三种方法来检查字符串是否为空、未定义或为空值。从这三种方法中,最好的方法是使用Boolean()构造函数的第二种方法。
不过,用户也可以使用Doble、Not(!!)操作符,这提供了简单的语法,但不适合初学者使用。