我在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"));
出于好奇,我想知道:为什么第一次通话使用点符号,第二次通话使用括号表示?
答案 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
也是保留字。