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


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 select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
Dec 19 Javascript
js prototype截取字符串函数
Apr 01 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
Aug 14 Javascript
解决JS浮点数运算出现Bug的方法
Mar 12 Javascript
jquery实现动态菜单的实例代码
Nov 28 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
js使用i18n实现页面国际化的方法
May 09 Javascript
knockoutjs模板实现树形结构列表
Jul 31 Javascript
Vue配置marked链接添加target="_blank"的方法
Jul 19 Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 Javascript
JavaScript和TypeScript中的void的具体使用
Sep 12 Javascript
vue 实现click同时传入事件对象和自定义参数
Jan 29 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模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
在JavaScript中调用php程序
2009/03/09 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
python自动化测试之setUp与tearDown实例
2014/09/28 Python
简单的编程0基础下Python入门指引
2015/04/01 Python
21行Python代码实现拼写检查器
2016/01/25 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
Python中包的用法及安装
2020/02/11 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
医学生临床实习自我评价
2014/03/07 职场文书
中学清明节活动总结
2014/07/04 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
软环境建设心得体会
2014/09/09 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
MySQL创建管理KEY分区
2022/04/13 MySQL