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


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 相关文章推荐
用JavaScript 处理 URL 的两个函数代码
Aug 13 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
Dec 25 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
Jun 23 Javascript
JS合并数组的几种方法及优劣比较
Sep 19 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
jQuery中index()方法用法实例
Dec 27 Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 Javascript
jQuery中 bind的用法简单介绍
Feb 13 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
vue自动化路由的实现代码
Sep 30 Javascript
js实现数字滚动特效
Dec 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
如何利用php+mysql保存和输出文件
2006/10/09 PHP
php中看实例学正则表达式
2006/12/25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
Python修改DBF文件指定列
2020/12/19 Python
Java的基础面试题附答案
2016/01/10 面试题
食品安全工作方案
2014/05/07 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
公司聚餐通知
2015/04/22 职场文书
上下班时间调整通知
2015/04/23 职场文书
政工师工作总结2015
2015/05/26 职场文书
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers