javascript对象访问问题

HelloBitches 2015-01-28 12:01:51
最近在研究javascript的一些特性,有两个问题让我迷惑
第一个问题:

var objA = {
name : "sam",
age : 27,
sex : "boy"
};
var objB = {
"name" : "lucy",
"age" : 24,
"sex" : "girl"
};

某个对象的属性名加引号和不加引号有没有区别?我自已写的测试,访问是没有区别的,如果没有区别ECMA为什么要搞不同的两种形式呢?
第二个问题:
我访问以上某个对象的时候采用这种写法

document.write(objA[name]);

会直接在页面上输出undefined
但是在访问age属性值时:

document.write(objA[age]);

页面上不会输出任何信息,firebug监控信息是age is not defined
好像提示的错误类型都是一样的,但为什么不是同样的提示方式呢,而是一个在页面上,一个在firebug里,唯一的区别就是age和name一个是数字类型的,一个字符串类型的,这是原因吗?
望赐教
...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
未知数 2015-01-28
  • 打赏
  • 举报
回复
不加引号是简化写法,加引号的是标准写法,当字段名包含某些特殊符号如 - 时,不能使用简化写法。 { z-index: 10 //错 } { 'z-index':10//正确 }
HelloBitches 2015-01-28
  • 打赏
  • 举报
回复
引用 6 楼 slwsss 的回复:
简单判断一个变量是否定义 alert('name' in window); alert('arg' in window);
引用 6 楼 slwsss 的回复:
简单判断一个变量是否定义 alert('name' in window); alert('arg' in window);
谢谢啦,我已经明白了
slwsss 2015-01-28
  • 打赏
  • 举报
回复
简单判断一个变量是否定义 alert('name' in window); alert('arg' in window);
HelloBitches 2015-01-28
  • 打赏
  • 举报
回复
引用 3 楼 slwsss 的回复:
age 没定义 直接使用会报错 name==window.name 有值,可以直接使用
你的意思是window这个对象本身就有name这个属性所以我写在这里被自动识别成window的name属性了吗?
KK3K2005 2015-01-28
  • 打赏
  • 举报
回复
引用 2 楼 qq317423553 的回复:
[quote=引用 1 楼 wzs_xyz 的回复:] 不加引号是简化写法,加引号的是标准写法,当字段名包含某些特殊符号如 - 时,不能使用简化写法。 { z-index: 10 //错 } { 'z-index':10//正确 }
那第二个问题呢[/quote] 和第一个意义一样 但是报错不一样是因为 你访问变量的时候 如果变量没有 定义 那么 age is not defined(就会报类似这样的错误) 第一个为什么不报 因为 window下 有name的定义
slwsss 2015-01-28
  • 打赏
  • 举报
回复
age 没定义 直接使用会报错 name==window.name 有值,可以直接使用
HelloBitches 2015-01-28
  • 打赏
  • 举报
回复
引用 1 楼 wzs_xyz 的回复:
不加引号是简化写法,加引号的是标准写法,当字段名包含某些特殊符号如 - 时,不能使用简化写法。 { z-index: 10 //错 } { 'z-index':10//正确 }
那第二个问题呢

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧