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