单个等于if.的JavaScript.有什么好理由吗?

Joe*_*M05 6 javascript jquery

jQuery.each(player, function(key, val){                     
     if (el = $("#pr_attr_plain_"+key)){
          el.text(val === "" ? 0 : " " + val);
     }
});
Run Code Online (Sandbox Code Playgroud)

我继承了一个项目,我遇到了一些奇怪的事情.开始这个项目的人是一名经验丰富的程序员,当然比我自己更多.这样做是否有任何价值或理由(无论多么糟糕):

if (el = $("#pr_attr_plain_"+key))
Run Code Online (Sandbox Code Playgroud)

它现在可以工作了,而且它是我不需要触摸的部分代码.我不想改变它,并且在不知道它可能做什么的情况下产生意想不到的后果.

Lat*_*SuD 11

它可以是正确的.代码相当于:

jQuery.each(player, function(key, val){                     
     el = $("#pr_attr_plain_"+key);
     if (el){
          el.text(val === "" ? 0 : " " + val);
     }
});
Run Code Online (Sandbox Code Playgroud)

  • 我将此添加为评论,因为没有人提及它.`$(..)`总是会返回一个jQuery对象,即使它与任何元素都不匹配.原始代码段并没有按照作者的想法执行.条件的主体将始终被执行,但如果`el`为空则无论如何都是无操作的,所以没关系.它应该只是`$("#pr ..").text(...);` (8认同)