javascript中name,value等属于保留字

前几天在练习js代码的时候,碰到了一个坑,这是让人醉了。

html代码如下:

 <div>
<div>
<!--输入 123456-->
<lable>请输入员工编号</lable>
<input id="keyWord" type="text">
</div> <div>
<!--输入 moran-->
<lable>请输入员工姓名</lable>
<input id="staffName" type="text">
</div>
<div>
<!--点击保存,输出监听函数中的log信息 @author www.yaoxiaowen.com-->
<button id="save">保存</button>
</div> </div>

js代码如下:

 var keyword=document.getElementById("keyWord");
var name=document.getElementById("staffName");
var save=document.getElementById("save"); //输出: keyword=[object HTMLInputElement] keyword.value =
console.log("keyword=" + keyword + "\t keyword.value = " +keyword.value); var keyValue = keyword.value;
//输出: ===
if (keyValue === ""){
console.log("===");
}else {
console.log("!==");
} //输出:name=[object HTMLInputElement] name.value = undefined
console.log("\t name=" + name + "\t name.value = " +name.value); //@author www.yaoxiaowen.com
save.onclick=function(){
//输出: keyword=[object HTMLInputElement] keyword.value = 123456
console.log("keyword=" + keyword + "\t keyword.value = " +keyword.value); //输出:name=[object HTMLInputElement] name.value = undefined
console.log("\t name=" + name + "\t name.value = " +name.value); //输出: document.getElementById('staffName').value = moran
console.log("document.getElementById('staffName').value = " + document.getElementById("staffName").value);
}

代码注释中已经写了相应的注释输出,完全一样的 <input>标签,js中获得Element也是一样的操作,可是 namekeyword它们的行为表现就是不一样。

盯着这些代码看了半天,各种调试测试,可是还是想不明白。最后意外的发现,把 name这个变量名修改成其他值就好了,比如name1之类的。

这就让我怀疑人生了。c,java,js等语言中那些关键字,保留字,比如for,while,break,private,class,,throw等这些不能用于变量名是常识,可是一个name是个普通的字符串啊。

然后去google搜索,竟然发现了某篇博客的这句话:

有些东西是保留字,避免使用就行了,没有为什么... js中的保留字会导致奇怪的结果,各个浏览器保留字不同,导致结果也不同,尽量不要使用name,value,if,in,for之类的东西做变量名

然后在菜鸟教程,发现了一个(在我看来)很庞大的保留字,关键字表点击查看

javascript中name,value等属于保留字

好吧,js中的坑真多,菜鸟教程的那些保留字表格,还是多读几遍吧,免得最后因为这个细节问题而出现难以调试的bug。


作者:
www.yaoxiaowen.com

github:
https://github.com/yaowen369

欢迎对于本人的博客内容批评指点,如果问题,可评论或邮件(yaowen369@gmail.com)联系

<p >
欢迎转载,转载请注明出处.谢谢
</p> <script type="text/javascript">
function Curgo()
{
window.open(window.location.href);
}
</script>
上一篇:数据库修改表空间简单方法


下一篇:ORACLE各版本下载地址