编译的CoffeeScript中的括号和点符号

时间:2013-06-13 19:02:40

标签: javascript coffeescript

我在Node / Express应用程序中有这段代码:

app.use "/static", express.directory("#{__dirname}/public")
app.use "/static", express.static("#{__dirname}/public")

它汇总到这个:

app.use("/static", express.directory("" + __dirname + "/public"));
app.use("/static", express["static"]("" + __dirname + "/public"));

出于好奇,我想知道:为什么第一次通话使用点符号,第二次通话使用括号表示?

3 个答案:

答案 0 :(得分:4)

因为ES3中保留了static。 (不再是ES5了。)

答案 1 :(得分:3)

因为静态是EcmaScript 5之前的Javascript中的保留字。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words

如果某些浏览器用作object.word语法的对象属性,则可能会抛出错误。

object['word']确保不会抛出任何错误。

答案 2 :(得分:1)

static是javascript中的保留字(保留供将来用作关键字)。

您可以在此处查看保留字列表:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words

例如,x.in编译为x["in"],因为in也是保留字。