Javascript 空检查没有按预期工作
Javascript null checking not working as expected
我正在使用 AngularJS 作为我的框架,并且还连接到网络服务以获取一些 JSON 数据。我有以下代码:
$login.onlineLogin($scope.credentials).
success(function (data, status, headers, config) {
if (data !== null ) {
console.log('Successful Login!');
console.log('Returned data: ' + data);
} else {
console.log('Failed to Login...');
}
}).
error(function (data, status, headers, config) {
console.log('HTTP Error...');
});
现在,当 HTTP 调用返回时,状态可能仍然是 200:OK,但它 returns 的对象可能为空,例如,在用户提供错误的用户凭据的情况下.所以我期望在这种情况下发生的是,如果对象不为空,它将打印出 'Successful Login!' 然后打印出对象。
但是,现在发生的情况是我使用了一些伪造的凭据,因此网络服务 returns 为空。但是仍然打印了 'Successful Login!',然后打印了 'Returned data: null'... 这没有意义。如果数据为空,它甚至不应该在该代码块中结束?
== 和 === 有区别。
JavaScript 具有严格(===)和类型转换(==)相等比较。
当两个字符串的字符序列相同、长度相同、对应位置的字符相同时,这两个字符串严格相等。
当两个数在数值上相等(具有相同的数值)时,它们严格相等。 NaN 不等于任何东西,包括 NaN。正零和负零彼此相等。
如果两个布尔操作数都为真或都为假,则两个布尔操作数严格相等。
如果两个对象引用同一个对象,则它们是严格相等的。
Null 和 Undefined 类型是 ==(但不是 ===)。 [IE。 Null==Undefined(但不是 Null===Undefined)]
if (data != null ) {
console.log('Successful Login!');
console.log('Returned data: ' + data);
} else {
console.log('Failed to Login...');
}
而不是
if (data !== null ) {
.....
}
使用这个
if(data) {
....
}
这将检查空字符串 (""
)、null
、undefined
、false
以及数字 0
和 NaN
.
如果您不确定您使用的变量类型是什么。
console.log(typeof variableName)
对于您的情况,可以使用
解决您的问题
if (data != 'null') {
...
我正在使用 AngularJS 作为我的框架,并且还连接到网络服务以获取一些 JSON 数据。我有以下代码:
$login.onlineLogin($scope.credentials).
success(function (data, status, headers, config) {
if (data !== null ) {
console.log('Successful Login!');
console.log('Returned data: ' + data);
} else {
console.log('Failed to Login...');
}
}).
error(function (data, status, headers, config) {
console.log('HTTP Error...');
});
现在,当 HTTP 调用返回时,状态可能仍然是 200:OK,但它 returns 的对象可能为空,例如,在用户提供错误的用户凭据的情况下.所以我期望在这种情况下发生的是,如果对象不为空,它将打印出 'Successful Login!' 然后打印出对象。
但是,现在发生的情况是我使用了一些伪造的凭据,因此网络服务 returns 为空。但是仍然打印了 'Successful Login!',然后打印了 'Returned data: null'... 这没有意义。如果数据为空,它甚至不应该在该代码块中结束?
== 和 === 有区别。 JavaScript 具有严格(===)和类型转换(==)相等比较。
当两个字符串的字符序列相同、长度相同、对应位置的字符相同时,这两个字符串严格相等。 当两个数在数值上相等(具有相同的数值)时,它们严格相等。 NaN 不等于任何东西,包括 NaN。正零和负零彼此相等。 如果两个布尔操作数都为真或都为假,则两个布尔操作数严格相等。 如果两个对象引用同一个对象,则它们是严格相等的。 Null 和 Undefined 类型是 ==(但不是 ===)。 [IE。 Null==Undefined(但不是 Null===Undefined)]
if (data != null ) {
console.log('Successful Login!');
console.log('Returned data: ' + data);
} else {
console.log('Failed to Login...');
}
而不是
if (data !== null ) {
.....
}
使用这个
if(data) {
....
}
这将检查空字符串 (""
)、null
、undefined
、false
以及数字 0
和 NaN
.
如果您不确定您使用的变量类型是什么。
console.log(typeof variableName)
对于您的情况,可以使用
解决您的问题if (data != 'null') {
...