这个问题很好有人关注,但我每一次在声明一个对象属性的时候都要想想要不要给属性加引号?加引号与不加引号有什么区别?
其实在JavaScript中,加引号与不加引号都是一样用,都是有效的。如
var obj = {
name: 'Nicholas Lee',
'age': 18,
};
console.log('name: ' + obj.name);
console.log('age: ' + obj.age);
Output:
name: Nicholas Lee
age: 18
哪在什么时候有区别呢?在你使用一些非合法命名规则的时候,就显的有必要了,比如
var obj = {
888name: 'Nicholas Lee'
};
console.log('888name: ' + obj.888name);
报错:
Uncaught SyntaxError: Invalid or unexpected token
但你给加上引号,就没事了
var obj = {
'888name': 'Nicholas Lee'
};
console.log('888name: ' + obj.888name);
执行发现还是报错,我们引用对象成员的时候,由于属性名不是合法命名规则,因此也需要使用中括号的方式来访问
var obj = {
'888name': 'Nicholas Lee'
};
console.log('888name: ' + obj['888name']);
只要属性是需要通过引号声明的,在访问该属性值的时候也必须通过中括号来访问,因为中括号里的属性名可以加引号
var obj = {
'': '这个属性名是空的',
' ': '这个属性名是一个空格'
};
console.log(obj['']);
console.log(obj[' ']);
以上的例子不大可能在实际编程中这么用,但为了举例