我需要将数据保存在全局变量中,以便我可以从不同的应用程序中使用它。
这是我试过的代码。
var userDetails=[];
function getDetails(){
var firstname=document.getElementById('firstname').value;
var lastname=document.getElementById('lastname').value;
var email=document.getElementById('email').value;
var password=document.getElementById('password').value;
var item = {}
item ["firstname"] = firstname;
item ["lastname"] = lastname;
item ["email"] = email;
item ["password"] = password;
userDetails.push(item);
}
问题是当我尝试从其他函数访问它时,我得到userDetails
未定义。
我在执行userDetails
后从另一个函数访问getDetails()
。
更新
我正尝试从以下功能访问userDetails
。注意:我在SignUp按钮上调用getDetails
,对于登录我正在调用它。
function login(){
var userName=document.getElementById('loginUserName').value;
var password=document.getElementById('loginPassword').value;
console.log(userDetails); // here i need userDetails to check if this user has signed up and credential are correct.
}
答案 0 :(得分:-1)
所有JS变量都应尽可能封装在闭包中。如果只有一个脚本块,则根本不需要全局变量。
但是,如果您需要跨多个源文件共享状态(因为闭包是 lexical 构造,不能跨越脚本文件边界),情况会有所不同。
最小化变量泄漏到全局变量的常用方法是创建一个单独的命名空间变量,然后包含您希望维护的所有其他状态变量,例如:
var MYMODULE = MYMODULE || {}; // use or create the namespace
(function(module) {
module.foo = 'bar'; // accessible outside as MYMODULE.foo
// any other variables declared with 'var' are private to this scope
var foo = 'bar'; // private
})(MYMODULE); //