这是大冰块2021年第12篇原创文章,和大冰块一起在前端领域努力吧!!!
写在前面
前两天看到一个同事的代码,他写对象的时候会把key值都会加上"",于是我又重新复习了一下关于对象中的key值加不加""的知识点。
那么加不加""有什么区别呢?首先要复习一下标识符原则:(1)标识符由字母、数字和下划线组成
(2)标识符的第一位必须是字母或者下划线,不能是数字
所以这里要分符合标识符情况和不符合标识符情况来说一下。
符合标识符情况
key加不加"",都一样,读取key对应的value有两种方式:obj["key"]和obj.key都可以。
代码如下:let obj1 = {name: "小明",age: 18,like: "爱好广泛"}let obj2 = {"name": "小红","age": 16,"like": "爱好很少"}console.log(obj1)
// {name: "小明", age: 18, like: "爱好广泛"}console.log(obj1.name, obj1.age, obj1.like)
// 小明 18 爱好广泛console.log(obj1['name'], obj1['age'], obj1['like'])
// 小明 18 爱好广泛console.log(obj2)
// {name: "小红", age: 16, like: "爱好很少"}console.log(obj2.name, obj2.age, obj2.like)
// 小红 16 爱好很少console.log(obj2['name'], obj2['age'], obj2['like'])
// 小红 16 爱好很少复制代码
不符合标识符情况
key必须加"",读取key对应的value只能是obj["key"]。
代码如下:let obj = {"0": "小明","0name": "小明明", // 这里会报错:Invalid or unexpected token(无效标记意外字符)"": 18,"¥": "哈哈"," ": "爱好广泛"}console.log(obj) // {0: "小明", 0name: "小明明", "": 18, ¥: "哈哈", " ": "爱好广泛"}console.log(obj.0, obj.0name) // 报错console.log(obj['0'], obj['0name'], obj[''], obj['¥'], obj[' ']) // 小明 小明明 18 哈哈 爱好广泛复制代码
另外Symbol类型的值也不符合标识符,需要这种写法:obj["key"]。