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


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 相关文章推荐
非主流的textarea自增长实现js代码
Dec 20 Javascript
JQuery动画和停止动画实例代码
Mar 01 Javascript
jQuery的slideToggle方法实例
May 07 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
JavaScript中的Math.sin()方法使用详解
Jun 15 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
Sep 06 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
javascript解决小数的加减乘除精度丢失的方案
May 31 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
VUE多层路由嵌套实现代码
May 15 Javascript
vue项目从node8.x升级到12.x后的问题解决
Oct 25 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
PHP合并静态文件详解
2014/11/14 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
php实现可逆加密的方法
2015/08/11 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
jquery一句话全选/取消全选
2011/03/01 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
js判断是否是手机页面
2017/03/17 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
js代码实现轮播图
2020/05/04 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
Python生成器(Generator)详解
2015/04/13 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Python绘制动态水球图过程详解
2020/06/03 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
什么是makefile? 如何编写makefile?
2013/01/02 面试题
高中毕业自我鉴定范文
2013/10/02 职场文书
订货会邀请函
2015/01/31 职场文书
小学六一主持词开场白
2015/05/28 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android