javascript对象属性的命名规则

515 阅读2分钟

《用得上的前端知识》系列 - 你我都很忙,能用100字说清楚,绝不写万字长文

JS标识符的命名规则(变量命名规则)

  • 标识符只能由字母、数字、下划线和‘$’组成
  • 数字不可以作为标识符的首字符

对象属性的命名规则

  • 通过[]操作符为对象添加属性时,属性名称可以是任何字符串
  • 通过.操作符为对象添加属性时,属性名称必须是合法的标识符名称;

纯数字属性名的特殊性

  • 纯数字属性名的使用比较特殊,可以通过对象字面量和obj[number]的形式为对象添加纯数字属性,解释器会自动将数字转换为数字字符串

注意:采用obj.number的方式读取纯数字属性名称时浏览器会报错:

var obj = {1:"first"}
obj[2]="second";
obj["3"]="third";

obj.3 // Uncaught SyntaxError: Unexpected number

布尔属性名的特殊性

  • 布尔属性名和纯数字属性名有着相似的行为
var obj = {true:'yes'}

obj.true // output: "yes"
obj["true"] // output: "yes"
Object.keys(obj) // output: ["true"]

采用[]操作符读取对象属性时,js解释器执行的动作

  • 采用obj[propertyName]的形式读取或创建对象属性时,解释器首先会检查propertyName是值类型字面量还是用户定义的变量,如果propertyName是值类型的字面量,则解释器自动将其转换为字符串后再读取或创建属性,如obj[1],obj[true]会被转换成obj["1"]、obj["true"];
  • 如果propertyName是变量名称(或者是表达式),则解释器会读取变量内容(或对表达式求值),如果变量的值是字符串,则直接读取属性,如果是其他类型的数据,则转换为字符串后再读取属性。

参考资料