我有以下代码将JSON字符串解析为一些变量:
ws.onmessage = function (event) {
var data = JSON.parse(event.data);
vm[keys(data)[0]] = values(data)[0];
}
传入的字符串将始终采用
的形式{
"somename": something
}
something
可以是值或数组。
我的目的是获取第一个(也是唯一的)键和第一个(也是唯一的)值,并使用它们来更新另一个变量(vm
)。
在Chrome开发者工具中调试代码时,它会停在keys
:
infoscreen.js:33 Uncaught ReferenceError: keys is not defined
at WebSocket.ws.onmessage (infoscreen.js:33)
ws.onmessage @ infoscreen.js:33
然而,在我所拥有的控制台上
> keys(data)[0]
< "calendar"
为什么keys
在运行时未定义但在控制台上可用(并返回预期结果)?
答案 0 :(得分:3)
Chrome开发工具是一个命令行,可以提供简单的javascript访问,但也提供了一系列便利功能,用于执行常见任务。
keys
function是其中之一(它提供与Object.keys
相同的输出),但您也可以使用多种功能。
在您的代码中,您应该使用Object.keys
代替:
ws.onmessage = function (event) {
var data = JSON.parse(event.data);
vm[Object.keys(data)[0]] = values(data)[0];
}
这是完整的命令行参考:
https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference
这是对Object.keys函数的引用:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys