Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 取消将字符串常量作为对象属性_Javascript_String_Constants - Fatal编程技术网

Javascript 取消将字符串常量作为对象属性

Javascript 取消将字符串常量作为对象属性,javascript,string,constants,Javascript,String,Constants,谁能给我解释一下Crockford在谈到字符串常量时的意思吗 “当下标是合法标识符形式的字符串常量时,可以使用点表示法。” 他把常数称为对象属性,但如果它们的值可能随时发生变化,为什么要称之为常数呢 或者,他是否将这些称为常量,因为一旦定义了属性名,它就永远不会更改 如果我要根据他的话编写一个伪代码,我会这样做(请注意,这段代码只是为了澄清我的想法,它实际上不是javascript代码,尽管它们相同): 非常感谢 object.helloOK object.2失败,因为2不是有效的标识符 ob

谁能给我解释一下Crockford在谈到字符串常量时的意思吗

“当下标是合法标识符形式的字符串常量时,可以使用点表示法。”

他把常数称为对象属性,但如果它们的值可能随时发生变化,为什么要称之为常数呢

或者,他是否将这些称为常量,因为一旦定义了属性名,它就永远不会更改

如果我要根据他的话编写一个伪代码,我会这样做(请注意,这段代码只是为了澄清我的想法,它实际上不是javascript代码,尽管它们相同):

非常感谢

  • object.hello
    OK
  • object.2
    失败,因为2不是有效的标识符
  • object.hello world
    因空间原因失败
  • object.a-b
    你觉得怎么样
      • object.hello
        OK
      • object.2
        失败,因为2不是有效的标识符
      • object.hello world
        因空间原因失败
      • object.a-b
        你觉得怎么样
          • object.hello
            OK
          • object.2
            失败,因为2不是有效的标识符
          • object.hello world
            因空间原因失败
          • object.a-b
            你觉得怎么样
              • object.hello
                OK
              • object.2
                失败,因为2不是有效的标识符
              • object.hello world
                因空间原因失败
              • object.a-b
                你觉得怎么样
                • 以下是我的信念

                  var obj = {'You can have spaces here' : 'value 1', cantHaveSpacesHere: 'value 2'};
                  console.log(obj['You can have spaces here']);
                  console.log(obj.cantHaveSpacesHere);
                  
                  这就是我所相信的

                  var obj = {'You can have spaces here' : 'value 1', cantHaveSpacesHere: 'value 2'};
                  console.log(obj['You can have spaces here']);
                  console.log(obj.cantHaveSpacesHere);
                  
                  这就是我所相信的

                  var obj = {'You can have spaces here' : 'value 1', cantHaveSpacesHere: 'value 2'};
                  console.log(obj['You can have spaces here']);
                  console.log(obj.cantHaveSpacesHere);
                  
                  这就是我所相信的

                  var obj = {'You can have spaces here' : 'value 1', cantHaveSpacesHere: 'value 2'};
                  console.log(obj['You can have spaces here']);
                  console.log(obj.cantHaveSpacesHere);
                  
                  当下标是字符串常量时,可以使用点表示法 以合法标识符的形式。”

                  这意味着可以使用不变的字符串值来读取和写入相同的属性值。消息是,尽管任何字符串值都可以在括号表示法中使用,但它必须是使用点表示法编写的合法标识符

                  例如
                  someObject[“propertyName”]
                  的意思与使用点符号的
                  someObject.propertyName
                  相同。两者都有效且有效。然而,虽然
                  someObject[“太…多…点”]
                  有效并使用括号表示法,但
                  someObject.too…多…点
                  不是合法标识符,也不起作用


                  在答复评论时:

                • 将“常量字符串”视为程序员用来访问属性值的名称:它在编写时是固定的,在代码运行时不会更改

                • 使用点表示法的属性名称不使用引号。
                  对象。“属性”
                  总是非法的

                • 对象属性名和变量名可以具有相同的名称,但不能引用相同的内容

                • 括号内的属性名称表示法是括号内的字符串值。如果这是一个字符串文字,它将被引用。如果它不是字符串文字,它将作为javascript表达式进行计算,结果用作属性名

                  obj.color = "red";
                  var prop = "color"
                  obj[ prop]; // value of property specified by the expression (prop) is "red"
                  
                • 当下标是字符串常量时,可以使用点表示法 以合法标识符的形式。”

                  这意味着可以使用不变的字符串值来读取和写入相同的属性值。消息是,尽管任何字符串值都可以在括号表示法中使用,但它必须是使用点表示法编写的合法标识符

                  例如
                  someObject[“propertyName”]
                  的意思与使用点符号的
                  someObject.propertyName
                  相同。两者都有效且有效。然而,虽然
                  someObject[“太…多…点”]
                  有效并使用括号表示法,但
                  someObject.too…多…点
                  不是合法标识符,也不起作用


                  在答复评论时:

                • 将“常量字符串”视为程序员用来访问属性值的名称:它在编写时是固定的,在代码运行时不会更改

                • 使用点表示法的属性名称不使用引号。
                  对象。“属性”
                  总是非法的

                • 对象属性名和变量名可以具有相同的名称,但不能引用相同的内容

                • 括号内的属性名称表示法是括号内的字符串值。如果这是一个字符串文字,它将被引用。如果它不是字符串文字,它将作为javascript表达式进行计算,结果用作属性名

                  obj.color = "red";
                  var prop = "color"
                  obj[ prop]; // value of property specified by the expression (prop) is "red"
                  
                • 当下标是字符串常量时,可以使用点表示法 以合法标识符的形式。”

                  这意味着可以使用不变的字符串值来读取和写入相同的属性值。消息是,尽管任何字符串值都可以在括号表示法中使用,但它必须是使用点表示法编写的合法标识符

                  例如
                  someObject[“propertyName”]
                  的意思与使用点符号的
                  someObject.propertyName
                  相同。两者都有效且有效。然而,虽然
                  someObject[“太…多…点”]
                  有效并使用括号表示法,但
                  someObject.too…多…点
                  不是合法标识符,也不起作用


                  在答复评论时:

                • 将“常量字符串”视为程序员用来访问属性值的名称:它在编写时是固定的,在代码运行时不会更改

                • 使用点表示法的属性名称不使用引号。
                  对象。“属性”
                  总是非法的

                • 对象属性名和变量名可以具有相同的名称,但不能引用相同的内容

                • 括号表示法中的属性名称是t