JavaScript中是否存在字符串.Empty,还是只是检查“”?
当前回答
为了检查变量是否为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修补内置类型是有争议的,因为无论出于什么原因,它都会破坏依赖于内置类型现有结构的代码。
其他回答
isBlank函数的最终和最短变体:
/***将返回:*False for:对于所有带字符的字符串*True for:false,null,undefined,0,0.0,“”,“”。**@param字符串*@return{boolean}*/函数isBlank(str){return(!!!str||/^\s*$/.test(str));}//测试console.log(“isBlank TRUE变量:”);console.log(isBlank(false));console.log(isBlank(未定义));console.log(isBlank(null));console.log(isBlank(0));console.log(isBlank(0.0));console.log(isBlank(“”));console.log(isBlank(“”));console.log(“isBlank FALSE变量:”);console.log(isBlank(“0”));console.log(isBlank(“0.0”));console.log(isBlank(“0”));console.log(isBlank(“0”));console.log(isBlank(“测试字符串”));console.log(isBlank(“true”));console.log(isBlank(“false”));console.log(isBlank(“null”));console.log(isBlank(“未定义”));
这是一个错误的值。
第一种解决方案:
const str = "";
return str || "Hello"
第二种解决方案:
const str = "";
return (!!str) || "Hello"; // !!str is Boolean
第三种解决方案:
const str = "";
return (+str) || "Hello"; // !!str is Boolean
忽略空白字符串,您可以使用它来检查null、空和undefined:
var obj = {};
(!!obj.str) // Returns false
obj.str = "";
(!!obj.str) // Returns false
obj.str = null;
(!!obj.str) // Returns false
它简明扼要,适用于未定义的财产,尽管它不是最可读的。
以下正则表达式是另一种解决方案,可用于null、空或未定义的字符串。
(/(null|undefined|^$)/).test(null)
我添加了这个解决方案,因为它可以进一步扩展,以检查空值或某些值,如下所示。下面的正则表达式正在检查字符串是否可以是空的、空的、未定义的或只有整数。
(/(null|undefined|^$|^\d+$)/).test()
不要假设您检查的变量是字符串。不要假设这个变量有一个长度,那么它就是一个字符串。
问题是:仔细思考你的应用程序必须做什么,可以接受什么。打造强健的体魄。
如果您的方法/函数只处理非空字符串,那么测试参数是否为非空字符串并且不要做一些“技巧”。
作为一个例子,如果你不小心遵循这里的一些建议,就会发生爆炸。
var getLastChar = function (str) {
if (str.length > 0)
return str.charAt(str.length - 1)
}
getLastChar('hello')
=> "o"
getLastChar([0,1,2,3])
=> TypeError: Object [object Array] has no method 'charAt'
所以,我会坚持
if (myVar === '')
...