Javascript 在NodeJS中读取JSON属性?

Javascript 在NodeJS中读取JSON属性?,javascript,json,node.js,Javascript,Json,Node.js,在NodeJS中从JSON读取属性时遇到问题 感觉我可能犯了一个明显的错误 JSON来自这个端点 我的代码: var request = require('request'); request("http://hypem.com/playlist/history/faisdotal/json/1/data.js", function (err, res, json) { JSON.parse(json); console.log(json["1"]["artist"]); // u

在NodeJS中从JSON读取属性时遇到问题

感觉我可能犯了一个明显的错误

JSON来自这个端点

我的代码:

var request = require('request');

request("http://hypem.com/playlist/history/faisdotal/json/1/data.js", function (err, res, json) {
  JSON.parse(json);
  console.log(json["1"]["artist"]);  // undefined
});

~

您需要存储JSON.parse的返回值:

json = JSON.parse(json);
console.log(json["1"]["artist"]);
我想你想要:

json = JSON.parse(json);
它不会(也不能)简单地更新参数的值。
.parse()
例程返回从传递给它的字符串解析的值


JavaScript完全是按值调用的,因此它实际上不可能以编写代码的方式工作。

多么尴尬,我一开始尝试了这个方法,但没有成功,这导致我只使用JSON.parse(JSON)bare。谢谢,“JavaScript完全是按值调用的”---。原语类型是通过值传递的,对象是通过引用传递的。不,这是错误的,@josh3736。对象始终是JavaScript中每个上下文中的引用。引用是按值传递的,这是JavaScript中对象“真实”的唯一方式。相信我,从严格意义上讲,这绝对是一种纯粹的按值调用语言。对,但在任何语言中,不是所有引用都是“按值传递”的吗?此外,说对象是“按值”传递的是误导<代码>var obj={a:1};函数inc(o){o.a++;};公司(obj)-
obj.a
2
。如果
o
具有按值语义,您会期望
obj.a
仍然是
1
,因为
inc
将获得一个值(副本),而不是对原始的引用。显然,您不能在
inc
中执行
o=0
来更改
obj
指向的内容,但只要参数
o
不是基元类型,您就可以修改它的任何属性。例如,
var obj='string';公司(obj)
obj.a
未定义。@josh3736您必须理解,术语“按值调用”和“按引用调用”在编程语言设计的讨论中具有不同的含义,这些含义与口语用法不太一致。阅读任何你喜欢的权威:JavaScript是一种纯粹的值调用语言。