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


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 相关文章推荐
asp 的 分词实现代码
May 24 Javascript
javascript中input中readonly和disabled区别介绍
Oct 23 Javascript
js字符串完全替换函数分享
Dec 03 Javascript
js+cookies实现悬浮购物车的方法
May 25 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
jQuery实现可拖拽3D万花筒旋转特效
Jan 03 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
@angular前端项目代码优化之构建Api Tree的方法
Dec 24 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
Mar 12 jQuery
Vue 组件的挂载与父子组件的传值实例
Sep 02 Javascript
js获取url页面id,也就是最后的数字文件名
Sep 25 Javascript
详解Vue的七种传值方式
Feb 08 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学习资源和链接.
2006/12/05 PHP
PHP form 表单传参明细研究
2009/07/17 PHP
php 启动报错如何解决
2014/01/17 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
vue监听scroll的坑的解决方法
2017/09/07 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
小程序实现密码输入框
2020/11/16 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Python函数和模块的使用总结
2019/05/20 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
部队党性分析材料
2014/02/16 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
管理标语大全
2014/06/24 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
财产分割协议书
2016/03/22 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL