浏览 2066 次
锁定老帖子 主题:变量声明时命名与变量作为对象属性时命名区别
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-02
最后修改:2010-03-29
这个标题实在拗口,javascript命名变量所遵循的规则
1、第一个字符必须是字母、汉字字符、 下划线(_)或美元符号($) 2、剩下的可以是下划线、汉字字符、 美元符号和任何字母、数字 //以下声明变量是正确的 var p,$p,_p; var 长,宽; //以下是错误的 var .p;//只能是字母、数字、下划线或美元符号 var -p;//只能是字母、数字、下划线或美元符号 var p*;//只能是字母、数字、下划线或美元符号 var 4p,4长;//不能以数字开头 var 长 度;//中间不能有空格 作为对象属性时,有两种方式存取。一是点号(.)运算符,一是中括号([])运算符。 var p = {name:"Jack"}; alert(p.name);//点号 alert(p['name']);//中括号
1、点号要求后面的运算元是合法的标识符(即合法的变量命名),对于不合法的不可以使用 2、中括号要求的则是一个字符串即可,不必是合法的变量命名。如4p是不合法的变量命名(因为以数字开头),但却可以作为对象属性名(前提是字符串)
var p = { "4p":"Jack", "-3":"hello", name:"Tom", "我":"me", "我 们":"we" }; alert(p.4p);//不合法,语法分析时报错,不能以数字开头 alert(p.我);//合法,输出"me" alert(p.我 们);//不合法,语法分析时报错("我"和"们"之间有个空格) alert(p["我 们"]);//合法,输出"we",虽然"我"和"们"之间有空格,仍然可以用[]存取 alert(p['4p']);//合法,输出"Jack" alert(p.name);//合法,输出"Tom"
ps:用直接量声明一个对象变量时,属性名有时候我们会加引号,有时候则不加,但无论加或不加,对象的属性类型都是string
如下: var book = {bname:"js权威指南","price":108};//bname没加引号,price加了 for(var attr in book) { //两次输出都是string,说明js会动态将其转换成字符串类型 alert( attr + ":" + typeof(attr) ); }
PS:中文命名变量时的问题见:http://snandy.iteye.com/blog/554877
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-02
var 变量 = '你能看到我!'; function 你好() { alert(变量); } 你好(); |
|
返回顶楼 | |
发表时间:2008-12-02
谢谢peacock提醒,ECMAScript3后支持Unicode字符集,即可以用汉字来作为变量名或函数名。 这里没考虑到。 |
|
返回顶楼 | |