Javascript 对Array.prototype.some()的质疑
这段代码来自freeCodeCamp挑战。它是有效的。但我需要一些澄清。在本练习中,是关于在调用查找函数时读取json数组以提取给定firstName属性的值。此外,在读取其值之前,请检查该属性是否存在 当contacts.some声明回调函数(arg){…}时,“arg”似乎已经知道调用查找函数时传递的“firstName”和“prop”参数Javascript 对Array.prototype.some()的质疑,javascript,json,Javascript,Json,这段代码来自freeCodeCamp挑战。它是有效的。但我需要一些澄清。在本练习中,是关于在调用查找函数时读取json数组以提取给定firstName属性的值。此外,在读取其值之前,请检查该属性是否存在 当contacts.some声明回调函数(arg){…}时,“arg”似乎已经知道调用查找函数时传递的“firstName”和“prop”参数 //设置 var触点=[ { “名字”:“Akira”, “姓氏”:“莱恩”, “编号”:“0543236543”, “喜欢”:[“披萨”、“编码”、
//设置
var触点=[
{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
},
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}
];
函数查找(名字,道具){
//仅更改此行下方的代码
var answer=“无此类联系”;
contacts.some(函数(arg){
if(arg.firstName==firstName&&arg.hasOwnProperty(prop)==true){
答案=arg[prop];
}else if(参数hasOwnProperty(prop)==false){
回答=“无此类财产”;
}
});
返回答案;
//仅更改此行上方的代码
}
//更改这些值以测试您的函数
查找(“克里斯蒂安”、“姓氏”)代码>编写的函数包含逻辑错误,这将阻止它执行其设计的操作。但是,我将专门解决您的问题,即回调如何在数组项中查看查找
函数的参数和属性
在JavaScript中,在给定范围内定义的函数可以看到它们所在范围内的变量。例如:
var variable = 5;
function incrementVariable()
{
variable++;
}
function doSomething(variable)
{
function incrementVariable()
{
variable++;
}
...
incrementVariable();
...
}
doSomething(5);
在此示例中,incrementVariable
可以看到变量变量
,即使它是在函数外部定义的。在此示例中,变量
是全局变量,但这可以在另一个函数中完成:
function doSomething()
{
var variable = 5;
function incrementVariable()
{
variable++;
}
...
incrementVariable();
...
}
函数的参数只是另一种类型的变量,例如:
var variable = 5;
function incrementVariable()
{
variable++;
}
function doSomething(variable)
{
function incrementVariable()
{
variable++;
}
...
incrementVariable();
...
}
doSomething(5);
在您发布的lookUp
函数中,contacts.some(…)
的参数是lookUp
函数中定义的函数,因此它可以“查看”lookUp
函数本身可以看到的所有内容,包括其参数
这种类型的共享范围的技术术语是“结束”
回调函数的arg
参数由some()
函数本身的操作定义。对contacts
数组中的每个元素调用一次回调。例如,第一次回调在arg
中有如下内容:
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
}
因此,回调可以同时看到firstName
、lookUp参数和arg.firstName
,在本例中是字符串“Akira”
。类似地,如果prop
是,比如说,“number”
,那么arg[prop]
引用该对象中的“number”
属性,在这种情况下,该属性将是“0543236543”
编写的函数包含逻辑错误,这将阻止它执行其设计的操作。但是,我将专门解决您的问题,即回调如何在数组项中查看查找
函数的参数和属性
在JavaScript中,在给定范围内定义的函数可以看到它们所在范围内的变量。例如:
var variable = 5;
function incrementVariable()
{
variable++;
}
function doSomething(variable)
{
function incrementVariable()
{
variable++;
}
...
incrementVariable();
...
}
doSomething(5);
在此示例中,incrementVariable
可以看到变量变量
,即使它是在函数外部定义的。在此示例中,变量
是全局变量,但这可以在另一个函数中完成:
function doSomething()
{
var variable = 5;
function incrementVariable()
{
variable++;
}
...
incrementVariable();
...
}
函数的参数只是另一种类型的变量,例如:
var variable = 5;
function incrementVariable()
{
variable++;
}
function doSomething(variable)
{
function incrementVariable()
{
variable++;
}
...
incrementVariable();
...
}
doSomething(5);
在您发布的lookUp
函数中,contacts.some(…)
的参数是lookUp
函数中定义的函数,因此它可以“查看”lookUp
函数本身可以看到的所有内容,包括其参数
这种类型的共享范围的技术术语是“结束”
回调函数的arg
参数由some()
函数本身的操作定义。对contacts
数组中的每个元素调用一次回调。例如,第一次回调在arg
中有如下内容:
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
}
因此,回调可以同时看到firstName
、lookUp参数和arg.firstName
,在本例中是字符串“Akira”
。类似地,如果prop
是,比如说,“number”
,那么arg[prop]
引用该对象中的“number”
属性,在本例中,该属性将是“0543236543”
“…它是关于读取json数组的”不,它是关于读取数组的。不涉及JSON。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么您就不是在处理JSON。这在文档中都有解释,请注意,您发现那里的代码非常糟糕,请参阅我的评论,以获得原因的简明版本(这些正是我在快速浏览中提到的)。@TedHopp:True,虽然代码误用了某些
并依赖闭包可能没有帮助。”…这是关于读取json数组的“不,这是关于读取数组的。不涉及JSON。JSON是用于数据交换的文本表示法。如果您正在处理JavaSc