我被告知此代码在此previous post
中泄漏了a1,a2,a3function t1()
{
var a=document.forms['f1'].elements;
a1="Please fill out all fields";
a2="Please enter your name using only letters and dashes";
a3="Please enter a valid email address";
a4="Password must be atleast 6 characters";
if(c0(a,a1,'fb2')&&c1(a,a2,'fb2')&&c2(a[2],a3,'fb2')&&c3(a[3],a4,'fb2'))
{
return 1;
}
else
{
return 0;
}
}
答案 0 :(得分:2)
似乎在上一篇文章中,“泄漏”指的是变量a1
到a4
未在函数t1()
的范围内正确声明的事实。如果没有var
关键字,它们就会成为全局变量。
var a1="Please fill out all fields";
var a2="Please enter your name using only letters and dashes";
var a3="Please enter a valid email address";
var a4="Password must be atleast 6 characters";
您可能打算使用逗号,
而不是分号;
来结束每一行,这会将它们全部链接到共享第一个var
关键字的单个语句中。在这种情况下,它们不会成为全球性的。请务必使用;
终止最后一个。但是,我认为如上所述,将每个语句作为自己的语句更具可读性和更好的实践。
有很多关于JS变量泄漏的博客文章。 Here's one I just found to get you started...