JS声明对象时属性名加引号与不加引号的区别

 

 转截自:https://blog.csdn.net/penwan/article/details/43452463

 

  这个问题很好有人关注,但我每一次在声明一个对象属性的时候都要想想要不要给属性加引号?加引号与不加引号有什么区别?

其实在JavaScript中,加引号与不加引号都是一样用,都是有效的。

var obj = {
    name : '博客',
    'age' : 18
};
 
document.write( 'name : ' + obj['name'] + '<br />' ); //博客
document.write( 'name : ' + obj[name] + '<br />' ); //undefined
document.write( 'name : ' + obj.name + '<br />' );//博客
document.write( 'age : ' + obj.age + '<br />' );//18

 

哪在什么时候有区别呢?在你使用一些非合法命名规则的时候,就显的有必要了

 

//var obj1 = {
//    888name : '博客'
//};
 
//document.write( '888name : ' + obj1.888name + '<br />' ); //报错

这时候会报错误:

 

(原文)但你给加上引号,就没事了

如果加上引号,使用  “.属性名”: 方式读取属性时仍然会出错:

//var obj2 = {
//    '888name' : '博客'
//};
 
//document.write( '888name : ' + obj2.888name + '<br />' );//报错

执行,发现报错:

 

如果加上引号,使用  “[‘属性名']”: 方式读取属性时不会出错:

var obj3 = {
    '888name': '博客'
};
 
document.write('888name : ' + obj3['888name'] +'<br />' );//888name : 博客

 

甚至还可以更特殊一点,如:

var obj4 = {
    '': '这个属性名是空的',
    ' ': '这个属性名是一个空格'
};
 
document.write(  obj4[''] +'<br />' );//这个属性名是空的
document.write(  obj4[' '] +'<br />' );//这个属性名是一个空格

 

我们引用对象成员的时候,由于属性名不是合法命名规则,因此也需要使用中括号的方式来访问,也建议大家以后采取中括号的方式读取对象属性值,以免有意外错误

虽然实际我们写程序一般都遵守程序公约,不会去制造一些另类,但特殊性情况下,这些能力也可以弥补一些变态需求。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值