是否有通用的JavaScript函数来检查变量是否具有值并确保它不是 undefined
要么 null
?我有这个代码,但我不确定它是否涵盖所有情况:
function isEmpty(val){
return (val === undefined || val == null || val.length <= 0) ? true : false;
}
是否有通用的JavaScript函数来检查变量是否具有值并确保它不是 undefined
要么 null
?我有这个代码,但我不确定它是否涵盖所有情况:
function isEmpty(val){
return (val === undefined || val == null || val.length <= 0) ? true : false;
}
你可以检查一下 变量 有一个 truthy
价值与否。这意味着
if( value ) {
}
将评估为 true
如果 value
是 不:
以上列表代表所有可能的 falsy
值ECMA-/ JavaScript的。在中找到它 规范 在 ToBoolean
部分。
此外,如果你不这样做 知道 变量是否存在(即,是否存在) 声明你应该检查一下 typeof
运营商。例如
if( typeof foo !== 'undefined' ) {
// foo could get resolved and it's defined
}
如果你可以肯定的是一个 变量 至少声明,你应该直接检查它是否有 truthy
价值如上所示。
进一步阅读: http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html
检查值是未定义还是null的详细方法是:
return value === undefined || value === null;
你也可以使用 ==
运营商,但这需要一个 了解所有规则:
return value == null; // also returns true if value is undefined
function isEmpty(value){
return (value == null || value.length === 0);
}
这将返回true
undefined // Because undefined == null
null
[]
""
并且由于功能的零点参数的函数 length
是它所声明的参数的数量。
要禁止后一类,您可能只想检查空字符串
function isEmpty(value){
return (value == null || value === '');
}
我知道这是一个老问题,但这是最安全的检查,我没有看到它在这里发布完全相同:
if (typeof value != 'undefined' && value) {
//deal with value'
};
它将涵盖案件 值 从未定义过,以及任何这些:
附:没有必要严格平等 typeof value!='undefined'
评分最高的第一个答案是错误的。如果value未定义,它将在现代浏览器中引发异常。你必须使用:
if (typeof(value) !== "undefined" && value)
要么
if (typeof value !== "undefined" && value)
您可能会发现下面的功能非常有用:
function typeOf(obj) {
return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}
或者在ES7中(如果进一步改进则发表评论)
function typeOf(obj) {
const { toString } = Object.prototype;
const stringified = obj::toString();
const type = stringified.split(' ')[1].slice(0, -1);
return type.toLowerCase();
}
结果:
typeOf(); //undefined
typeOf(null); //null
typeOf(NaN); //number
typeOf(5); //number
typeOf({}); //object
typeOf([]); //array
typeOf(''); //string
typeOf(function () {}); //function
typeOf(/a/) //regexp
typeOf(new Date()) //date
“请注意,绑定运算符(::)不是ES2016(ES7)的一部分,也不是ECMAScript标准的任何后续版本。它目前是引入该语言的第0阶段(草编)提议。” - 西蒙谢尔贝格。作者希望加入他对这一美丽提案的支持,以获得皇室提升。
! 检查空字符串(“”),null,undefined,false以及数字0和NaN。比如说,如果一个字符串是空的 var name = ""
然后 console.log(!name)
回报 true
。
function isEmpty(val){
return !val;
}
如果,此函数将返回true VAL 是 empty,null,undefined,false,数字0或NaN。
你有点过头了。要检查变量是否未赋值,您只需要检查undefined和null。
function isEmpty(value){
return (typeof value === "undefined" || value === null);
}
这是假设 0
, ""
和对象(甚至是空对象和数组)都是有效的“值”。
这是我的 - 如果value为null,undefined等等或空白(即仅包含空格),则返回true:
function stringIsEmpty(value) {
return value ? value.trim().length == 0 : true;
}
如果你更喜欢普通的javascript试试这个:
/**
* Checks if `value` is empty. Arrays, strings, or `arguments` objects with a
* length of `0` and objects with no own enumerable properties are considered
* "empty".
*
* @static
* @memberOf _
* @category Objects
* @param {Array|Object|string} value The value to inspect.
* @returns {boolean} Returns `true` if the `value` is empty, else `false`.
* @example
*
* _.isEmpty([1, 2, 3]);
* // => false
*
* _.isEmpty([]);
* // => true
*
* _.isEmpty({});
* // => true
*
* _.isEmpty('');
* // => true
*/
function isEmpty(value) {
if (!value) {
return true;
}
if (isArray(value) || isString(value)) {
return !value.length;
}
for (var key in value) {
if (hasOwnProperty.call(value, key)) {
return false;
}
}
return true;
}
否则,如果您已经使用下划线或lodash,请尝试:
_.isEmpty(value)