排行榜示例,与'selected_name'返回值混淆

时间:2013-11-27 17:07:13

标签: javascript meteor

在排行榜示例中,在leaderboard.html中,对{{selected_name}}的调用如何返回selected_name字符串,但在函数所在的leaderboard.js文件中,它返回一个布尔值?我知道这更像是一个JS问题,但只是试图让我的脑袋缠绕它

1 个答案:

答案 0 :(得分:2)

您正在考虑以下代码?

Template.leaderboard.selected_name = function () {
    var player = Players.findOne(Session.get("selected_player"));
    return player && player.name;
}

虽然&& - 运算符是布尔运算符,但它不会返回布尔值。 “正确的方式”当然只有return player.name,但如果Players.find返回null(没有选定ID存在的玩家),则此代码在执行时会崩溃。为避免这种情况发生,使用了&& - 运算符的小黑客,这可确保player.name仅在player为非虚假(不是null)时执行。操作符的结果是它的右侧,因此返回播放器的名称(或null,它的左侧,如果它是null)。