JavaScript中是否存在字符串.Empty,还是只是检查“”?
当前回答
开始于:
return (!value || value == undefined || value == "" || value.length == 0);
查看最后一个条件,如果值==“”,则其长度必须为0。因此,删除它:
return (!value || value == undefined || value == "");
但是等等!在JavaScript中,空字符串为false。因此,下降值==“”:
return (!value || value == undefined);
和undefined为true,因此不需要检查。因此,我们有:
return (!value);
我们不需要括号:
return !value
其他回答
为了检查变量是否为false,或者它的长度属性是否等于零(对于字符串,这意味着它为空),我使用:
function isEmpty(str) {
return (!str || str.length === 0 );
}
(请注意,字符串不是唯一具有长度属性的变量,例如,数组也有它们。)
或者,您可以使用(并非如此)新可选的链接和箭头函数来简化:
const isEmpty = (str) => (!str?.length);
它将检查长度,如果为空值,则返回undefined,而不会抛出错误。在空值的情况下,零是错误的,结果仍然有效。
为了检查变量是否为false,或者字符串是否仅包含空格或为空,我使用:
function isBlank(str) {
return (!str || /^\s*$/.test(str));
}
如果需要,您可以像这样对String原型进行猴式修补:
String.prototype.isEmpty = function() {
// This doesn't work the same way as the isEmpty function used
// in the first example, it will return true for strings containing only whitespace
return (this.length === 0 || !this.trim());
};
console.log("example".isEmpty());
请注意,monkey修补内置类型是有争议的,因为无论出于什么原因,它都会破坏依赖于内置类型现有结构的代码。
试试看:
export const isEmpty = string => (!string || !string.length);
我宁愿使用非空白测试而不是空白测试
function isNotBlank(str) {
return (str && /^\s*$/.test(str));
}
您可以使用typeof运算符和length方法检查这一点。
const isNonEmptyString = (value) => typeof(value) == 'string' && value.length > 0
我使用组合,最快的检查是第一个。
function isBlank(pString) {
if (!pString) {
return true;
}
// Checks for a non-white space character
// which I think [citation needed] is faster
// than removing all the whitespace and checking
// against an empty string
return !/[^\s]+/.test(pString);
}