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

leaderboard example, confusion with 'selected_name' return value

本文关键字:name 返回值 selected 排行榜      更新时间:2023-11-04

在排行榜示例中,在leaderboard.html中,为什么对{{selected_name}}的调用会返回selected_name字符串,而在函数所在的leaderboard.js文件中,它会返回布尔值?我知道这更多的是一个JS问题,但我只是想让我的头脑围绕它

您正在考虑以下代码?

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不是falsye(而不是null)的情况下才执行player.name。操作符的结果是它的右手边,所以会返回玩家的名字(或者null,如果是null,则是它的左手边)。