嗨,我在比较两个字符串时遇到问题。问题是,当我比较status变量与"success"字符串文字的相等性时,它返回False,但是当我通过successalert检查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”


错误消息显示,valueOfundefined上被调用。这意味着statusundefined。因此,您可能需要删除valueOf并简单地执行

if (status === "success") {

10-05 21:03
查看更多