name不能做变量名
来源:互联网 发布:如何增加淘宝搜索量 编辑:程序博客网 时间:2024/05/16 12:06
JavaScript中,name最好不要用作变量名,否则会有迷之bug。
会报错或造成一些错误的命名
- 保留字
- 关键字
- JavaScript对象、属性和方法
- Java保留关键字(Java可以和JavaS一起使用)
- Windows保留关键字
- HTML事件句柄
- 非标准JavaScript
具体内容请看:http://www.runoob.com/js/js-reserved.html
哭了,今天我被一个bug折腾了半天。最后发现是因为变量名name原来是JavaScript内置的属性(用了var name,居然不给我报错!)。之前我完全不知道有这么个没什么用的属性,直到这次我膝盖中了一箭。name不是保留字,也不是关键字,所以用作变量并不会报错,这便是它最可怕的地方。 命名变量的时候
MDN关于Window.name属性的文档:https://developer.mozilla.org/en-US/docs/Web/API/Window/name
事情是这样的:
我想给input加个keyup事件实现ajax。input的id是username,秉着变量名简单易懂的原则,我机智地定义一个名为“name”的帅气变量。从此我的噩梦便开始了。
首先我通过id获取了input元素,然后调用keyup方法。console并没有报错,然而keyup里面的代码却没有执行。我想,莫不是keyup没写对?检查半天,也没打错什么字,语法也ok。开始我用的是DOM 0级事件,input元素莫非有点特殊,那我用DOM 2级事件试试?于是我改成name.addEventListener()。好了,这下报错了,说这个name.addEventListener()不是函数。诶?我……不对啊!这是什么鬼错误,代码又写错了?我又检查了一遍代码,没毛病。
这时候,我开始怀疑是并没有获取到元素。因为我其实是写了console.log(name);的,输出有点奇怪,是[object HTMLInputElement]。这个输出很奇怪,输出的貌似是个对象。然后我就试着输出下name.value,结果输出的是undefined,黑人问号??? 这么说,可能是获取元素出错了,这个获取id不行,那我就换一个获取方法,用document.forms[0].elements[“username”]。结果输出没什么变化,奇了个怪了。完了,难道浏览器出bug了,不可能啊,代码全都没问题啊。我去看了下其它成功执行的代码,对比了下语法什么的,还是找不到问题所在。
然后我就想,莫不是input有点神奇?那我试试其它的元素,然后就去获取一个< p>元素,发现这个超正常的!那为什么这个input就不行?
这时候我其实是绝望的。我就随便改一些东西。然后我参照了另一个文件的代码。它用的变量名是textbox,突然我觉得或许name不能做变量,因为它是DOM元素的一个属性。那我改成textbox好了。。然后,可以了。输出和事件响应函数都没问题了!!
我的内心是一群草泥马在奔腾。。。
写代码就是这样,什么坑都有,这种坑也有!听说有人还以为屏幕上的一个灰尘发现不了错误。在学习代码的过程中,除了要有扎实的基础知识,保证自己的语法不会出现太大错误,还要熟悉一些容易出错的地方,尽量去避免。第一次掉进坑里爬出来就不要第二次还掉下去。还有就是最好有一个优秀的前辈去询问,没有的话也可以去论坛和交流群礼貌地询问。
特写下此文,记录我悲惨绝望的过去。
- name不能做变量名
- JavaScript命名——name不能做变量名
- 关于JavaScript中用name作为变量名
- 奇怪的javascript变量名"name"
- C# 值不能为null,参数名:name 【已经解决】
- 严重支持用中文名做变量名
- js 用"name"做数组变量命名的问题
- 数组名不能做自增或自减
- c++的函参名和变量名不能相同
- js 变量做方法名的方法--都可用
- javascript不能验证登陆,可能是出现了方法名与某个name重名了
- Oracle的字段名不能和变量名一样,否则会无效
- 尽量不要用常用的属性名或方法名做form表单内元素的名字name或id
- ajax不能传参数变量,做个提醒
- 影片剪辑实例的name属性与实例变量名的区别
- 一般c++编译出现"name lookup of '变量名' changed [enabled by default]"的警告
- C#居然可以用中文做变量名和函数名
- 变量名
- linux下创建定时任务
- 学习小结
- 剑指offer习题JAVA实现(一)
- SpringMVC 配置Thymeleaf模板
- 0418-交集选择器
- name不能做变量名
- 算法导论程序1--插入排序(Python+Java)
- Python 标准库 urllib2 的使用细节
- js实例(setInterval, clearInterval)
- 《精通CSS》笔记3
- StringBuffer的常见方法及注意事项
- Maven集成阿里大鱼短信
- JDSC接口
- JSP && JavaScript