有人告诉我,这段代码在这个previous post中泄漏了a1、a2、a3
function 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;
}
}发布于 2011-07-07 08:24:55
似乎在上一篇文章中,“泄漏”指的是变量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...
https://stackoverflow.com/questions/6604538
复制相似问题