首页 > 解决方案 > 为什么我的 var 变为未定义但在前一个函数中设置?

问题描述

目前我正在尝试模拟登录/注册表单,我目前遇到了一个问题,我似乎无法找到解决方案来解决它说我的“用户名”未定义但onReg首先运行该功能。

var tempusername
var temppassword
var tempconpassword

var username
var password

function onReg(tempusername, temppassword, tempconpassword, username, password){

tempusername = document.querySelectorAll("[name=username]")[0].value
temppassword = document.querySelectorAll("[name=password]")[0].value
tempconpassword = document.querySelectorAll("[name=conpassword]")[0].value

if(temppassword == tempconpassword && tempusername.length>2 && temppassword.length>2 && tempconpassword.length>2 ){

    username = tempusername
    password = tempconpassword
    alert(username + " : " + password)

}
else if (password!=tempconpassword){
    alert("Password doesnt match or is to short!")

}
}

function onLogin(username,password) {
    alert("Does this work?" + username)
}

我认为可能是因为它不是全局范围?如果是这样,我怎么会用这段代码来做呢?

标签: javascriptfunctionscopevar

解决方案


usernameinsideonLogin是一个正式的函数参数。调用时必须显式地向它传递一个值onLogin

var x = 'foo';
function checkX() {
    alert(x);
}  
function badCheckX(x) {
    alert(x);
}
checkX(); // 'foo'
badCheckX(); // undefined
badCheckX('bar'); // 'bar'
badCheckX(x); // 'foo'  

推荐阅读