Node.js 当我使用[]设置对象时,为什么该对象不能在Express中工作

Node.js 当我使用[]设置对象时,为什么该对象不能在Express中工作,node.js,express,Node.js,Express,当我把对象写在第三个括号内时,它工作得很好,但当我定义之后它就不工作了。为什么不这样做 []语法采用字符串,因此您可以使用它根据动物的值访问猪、牛或狗的属性。这个语法不使用字符串,而是使用标识符,因为没有名为animal的属性,所以您将无法定义。因为语法错误?阅读langague规范并查看索引括号的用途。将您的内容作为文本。但是animalSounds[animal]和animalSounds.animal是一样的,只有当animal===animal时才是。不清楚你为什么认为点符号在这里起作用

当我把对象写在第三个括号内时,它工作得很好,但当我定义之后它就不工作了。为什么不这样做

[]语法采用字符串,因此您可以使用它根据动物的值访问猪、牛或狗的属性。这个语法不使用字符串,而是使用标识符,因为没有名为animal的属性,所以您将无法定义。

因为语法错误?阅读langague规范并查看索引括号的用途。将您的内容作为文本。但是animalSounds[animal]和animalSounds.animal是一样的,只有当animal===animal时才是。不清楚你为什么认为点符号在这里起作用。例如,在java脚本中,点符号和括号系统都工作得很好。所以,我想知道为什么这里不使用它。在您的例子中,animal是一个变量。您可以在括号表示法中使用它,因为它基本上是一个字符串。但是,使用点表示法时,属性必须是有效的JavaScript标识符,而字符串则不是。换句话说,animalSounds[pig]有效,但不是animalSounds。pig阅读更多:现在我明白了。谢谢你回答我的问题。
app.get("/speak/:animal",function(req,res){

    var animal= String(req.params.animal);
    var animalSounds={
        pig: "Oink",
        cow: "Moo",
        dog: "Woof woof" 
    }
 var animalSound = animalSounds[animal]; //Working
 var animalSound = animalSounds.animal;  // Not working

 res.send(animalSound);
})