javascript - Array.prototype.some() 返回一个文字吗?如果是这样,这段代码是什么意思?

标签 javascript arrays prototype

来自 oreilly 一本关于 Node 和 Express 的书的示例:

var tours = [
  {id:0, name: 'test', price: 0.0},
  {id:1, name: 'test2', price: 0.2}
];

app.put('/api/tour/:id', function(req, res){
  var p = tours.some(function(p){return p.id == req.params.id });
  if (p) {
    if (req.query.name) p.name = req.query.name;
    if (req.query.price) p.price = req.query.price;
    res.json({success:true;});
  } else {
    res.json({error: 'No such tour exists.'});
  }
});

假设 p 返回 true,我是否正确地假设尝试将属性分配给 p 不起作用?

最佳答案

Array.prototype.some() method返回一个 bool 值。这是一个原始值,而不是“文字”。

您是正确的,如果 p 包含 bool 值,则分配诸如 p.name 之类的属性将不起作用

(但是,我相信只有当代码在严格模式下运行时才会导致异常,否则尝试的分配将会失败。)

即使分配这些 .name.price 属性有效,该代码仍然不太有意义,因为 p 是一个局部变量该函数中不会再次引用该函数。仅当 .some() 返回对匹配数组元素的引用时才有意义,因为那么它将是一个对象,并且代码将更新该对象的属性.

关于javascript - Array.prototype.some() 返回一个文字吗?如果是这样,这段代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084454/

相关文章:

javascript - 通过 AJAX 更改 link_to 参数

javascript - JQuery - 从响应中获取 Cookie

javascript - 在单击事件处理程序中调用自定义 jQuery 插件会生成错误

javascript - 从 Angular 4 的数组列表中删除错误的项目

c - 数组元素之间的差值之和

javascript - 如何将一串句子分成两半,分成两个字符串的数组,每个字符串的长度尽可能相似?

javascript - 通过 javascript 和 css 访问 html 表的 td 属性

ios - 使用数组变量 SWIFT 检查文本框

javascript - 为什么这个 Javascript 原型(prototype)代码会失败?

javascript - 通过伪经典实例化(JavaScript)掌握原型(prototype)继承