《用得上的前端知识》系列 - 你我都很忙,能用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是变量名称(或者是表达式),则解释器会读取变量内容(或对表达式求值),如果变量的值是字符串,则直接读取属性,如果是其他类型的数据,则转换为字符串后再读取属性。