Javascript控制台说:左侧分配无效?

时间:2013-04-17 23:36:50

标签: javascript

所以,这是为了进行安全登录。我通过chrome的javascript控制台运行这个,我得到'Uncaught ReferenceError:赋值中的左侧无效'?请帮忙!

function logIn() {
String.prototype.hashCode = function() {
        for(var ret = 0, i = 0, len = this.length; i < len; i++) {
        ret = (31 * ret + this.charCodeAt(i)) << 0;
    }
        return ret;
    };

var user = document.getElementById("username"),
    pass = document.getElementById("password");
if ((user = "Fedora") && (pass.hashCode() = -976887139)) {
    window.alert("Captain Fedora: SuperUser");

}
}   

3 个答案:

答案 0 :(得分:3)

if ((user = "Fedora") && (pass.hashCode() = -976887139))

应该是

if ((user == "Fedora") && (pass.hashCode() == -976887139))

所以你做比较,而不是分配

答案 1 :(得分:0)

是的,pass.hashCode() = -976887139assignment。由于函数调用不是return a reference,因此分配给它是无效的。你可能想要comparison

pass.hashCode() == -976887139

另外,您需要获取这些DOM元素的values(我完全不相信密码输入 一个hashCode方法)还希望将user变量的内容与该字符串进行比较,而不是将其分配。

var user = document.getElementById("username").value,
    pass = document.getElementById("password").value;
if (user == "Fedora" && pass.hashCode() == -976887139) {
    window.alert("Captain Fedora: SuperUser");
}

答案 2 :(得分:0)

if ((user = "Fedora") && (pass.hashCode() = -976887139))

更改为

if ((user == "Fedora") && (pass.hashCode() == -976887139))

同样'reuturn ret'可能会返回undefined,因为在错误的范围内。 var ret = 0仅适用于'for'范围