嗨,我在比较两个字符串时遇到问题。问题是,当我比较status
变量与"success"
字符串文字的相等性时,它返回False
,但是当我通过success
或alert
检查console.log
的值时,得到"success"
。
当我使用status.valueOf() == "success"
时出现错误消息Can not call method 'valueOf' of undefined
,但是在检查时
// this is a callback function used in jQuery.post(url, data, callback)
this.callback = function(data, status, jqXHR) {
alert(status); // shows that status is equal to "success"
console.log("STATUS: " + status);
console.log("STATUS CONSTRUCTOR: " + status.constructor);
console.log("STATUS TYPE: " + (typeof status));
if(status.valueOf() === "success") {
var data = JSON.parse(data);
if(data.errors) {
this.success(data.message);
} else {
this.failure(data.message, data.errors);
}
} else {
alert("WTF");
}
};
更新2:
这是我记录
status
的某些属性后得到的结果:>>>console.log("STATUS: " + status);
STATUS: success add_poll.js:34
>>>console.log("STATUS CONSTRUCTOR: " + status.constructor);
STATUS CONSTRUCTOR: function String() { [native code] } add_poll.js:35
>>>console.log("STATUS TYPE: " + (typeof status));
STATUS TYPE: string add_poll.js:36
STATUS: undefined add_poll.js:34
Uncaught TypeError: Cannot read property 'constructor' of undefined add_poll.js:35
(callback add_poll.js:35)
(callback add_poll.js:41)
(fire jquery.js:1037)
最佳答案
无法调用未定义的方法“ valueOf”
错误消息显示,valueOf
在undefined
上被调用。这意味着status
是undefined
。因此,您可能需要删除valueOf
并简单地执行
if (status === "success") {