来自 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/