一个login函数名在javascript中引发的“血案”

作者:     目录: PHP+MySQL     发表: 2010年04月16日

login究竟是不是Javascript预留的关键字?为何自己编写login()函数不起作用?而将自定义函数名由login()修改为其他字符串(check_Null)后,问题解决。

Javascript预留了一些关键字(Reserved Words),所谓关键字是指在Javascript语言中有特定含义,成为Javascript语法中一部分的那些字。Javascript关键字是不能作为变量名和函数名使用的。

Javascript关键字列表:

break delete function return typeof case do if switch var catch else in this void continue false instanceof throw while debugger finally new true with default for null try

Javascript未来关键字(Javascript Future Reserved Words)

Javascript还有一些未来关键字,这些字虽然现在没有用到Javascript语言中,但是将来有可能用到。
abstract double goto native static boolean enum implements package super byte export import private synchronized char extends int protected throws class final interface public transient const float long short volatile

对比了一下,发现login不属于Javascript关键字,或许login()是javacript的内置函数? 但在网上搜了一下,也没找到相关信息。 我也不知道为什么会这样!

具体案例

HTML

<form method=”post” name=”myform” id=”myform” action=””>
<p>
<label>Email:</label>
<input name=”link_email” id=”link_email” type=”text” />
<span>Require</span></p>
<p>
<label>Password:</label>
<input name=”link_password” type=”text” id=”link_password” onfocus=”javascript:this.value=”;” />
</p>
<p>
<label>&nbsp;</label>
<input type=”submit” name=”login” value=”Submit”
onclick=”javascript:return login();”>
</p>
</form>

Javascript

<script language=”javascript”>
<!–
function login(){
if (document.myform.link_email.value==””){
alert(“用户名不能为空!”);
return false;
}
if (document.myform.link_password.value==””){
alert(“密码不能为空!”);
return false;
}
return true;
}
// –>
</script>

问题点:

使用login()函数不能对文本框的内容进行检查,没有实现应有的功能。

解决方法:

将login()函数名修改为check_Null(),问题解决。

预览最终效果

login函数名在javascript中引发的“血案”

总结:

在编写程序时,须注意变量名及函数名是否是预留关键字,或与内置函数重名,尽量远离那些预留关键字。

1 个评论

发表评论