如果这是一个noob问题,我很抱歉。但是我一直在检查global
中的node.js
var并且被语法弄得一团糟。
它显然是一个JSON对象,但它看起来像:
reallyExit: [Function: reallyExit],
binding: [Function: binding],
exit: [Function]
因此,我的具体问题是:
1.如果他们有一个功能对象,为什么要把它放在方括号中?
2.为什么他们把一个键值对放在括号中? [Function: reallyExit]
3.关键定义的差异是什么:[Function: reallyExit]
与[Function]
答案 0 :(得分:5)
它显然是一个JSON对象
不,不是。 Acceptable types in JSON 不包含函数。由于这些变量是函数,所以您看到的是函数的toString
,而不是对象。
为什么他们将键值对放在括号中?
如果您在节点命令行中使用df1 <- structure(list(Date = structure(c(16445, 16446, 16451, 16455),
class = "Date"),
Obs = c(2L, 3L, 1L, 4L)), .Names = c("Date", "Obs"),
row.names = c(NA, -4L), class = "data.frame")
df2 <- structure(list(Date = structure(c(16444, 16445, 16446, 16447,
16448, 16449, 16450, 16451, 16452, 16453, 16454, 16455, 16456
), class = "Date"), cumSum = c(0L, 2L, 5L, 5L, 5L, 5L, 5L, 6L,
6L, 6L, 6L, 10L, 10L)), .Names = c("Date", "cumSum"), row.names = c(NA,
-13L), class = "data.frame")
,那么您可能会看到util.inspect
的输出,而不是正常console.log
。而不是正常toString
,toString
给出“......对象的字符串表示,这对调试很有用。”
换句话说,节点util.inspect
将使用括号作为表示各种对象,函数,数组等的简洁方法。
关键定义的区别是什么:[功能:reallyExit]与[功能]
差异是前者是function declaration,后者是function expression。例如:
console.log
答案 1 :(得分:1)
这是Javascript对象在处理toString
时所采用的格式。 [Function: something]
不是键值对。在这里,我认为你得到了对象的原型(Function
)和它的声明名称(当它最初不是匿名函数时)。
Javascript对象不是JSON-s。 JSON是用于交换数据的表示法。它源自Javascript,但现在是一种独立的格式。