变量声明时命名与变量作为对象属性时命名的区别解析


Posted in Javascript onDecember 06, 2013

这个标题实在拗口,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"

用直接量声明一个对象变量时,属性名有时候我们会加引号,有时候则不加,但无论加或不加,对象的属性类型都是string
var book = {bname:"js权威指南","price":108};//bname没加引号,price加了 
for(var attr in book) { 
     //两次输出都是string,说明js会动态将其转换成字符串类型 
     alert( attr + ":" + typeof(attr) ); 
}
Javascript 相关文章推荐
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
删除javascript中注释语句的正则表达式
Jun 11 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
Jun 11 Javascript
easyui Droppable组件实现放置特效
Aug 19 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
javascript 封装Date日期类实例详解
May 28 Javascript
vue数据双向绑定的注意点
Jun 23 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
使用vuepress搭建静态博客的示例代码
Feb 14 Javascript
Vue结合路由配置递归实现菜单栏功能
Jun 16 Javascript
JavaScript作用域与作用域链深入解析
Dec 06 #Javascript
深入解析JavaScript中的变量作用域
Dec 06 #Javascript
关于Javascript作用域链的八点总结
Dec 06 #Javascript
Javascript变量作用域详解
Dec 06 #Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
Dec 06 #Javascript
Javascript中克隆一个数组的实现代码
Dec 06 #Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 #Javascript
You might like
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
php按单词截取字符串的方法
2015/04/07 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python编程入门的一些基本知识
2015/05/13 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
python生成验证码图片代码分享
2016/01/28 Python
python中reader的next用法
2018/07/24 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
《记金华的双龙洞》教学反思
2014/04/19 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
生日宴会祝酒词
2015/08/10 职场文书