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


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 相关文章推荐
js function使用心得
May 10 Javascript
javascript中call和apply方法浅谈
Sep 27 Javascript
javaScript中push函数用法实例分析
Jun 08 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
React实现点击删除列表中对应项
Jan 10 Javascript
详解webpack打包vue时提取css
May 26 Javascript
JavaScript实现图片拖曳效果
Sep 08 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
Oct 26 Javascript
详解VUE 数组更新
Dec 16 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
Apr 11 Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 Javascript
Vue详细的入门笔记
May 10 Vue.js
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日历
2015/11/17 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
一个网马的tips实现分析
2010/11/28 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
浅谈Python处理PDF的方法
2017/11/10 Python
Python常见工厂函数用法示例
2018/03/21 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
python模拟实现斗地主发牌
2020/01/07 Python
python实现126邮箱发送邮件
2020/05/20 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
应届生高等护理求职信
2013/10/12 职场文书
校长岗位职责
2013/11/26 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
初三学习决心书
2014/03/11 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
安全生产计划书
2014/05/04 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
新闻报道稿范文
2015/07/23 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android