我正在查看一个jQuery平滑滚动教程,并尝试弄清楚它的工作原理,当我遇到了这行代码:
$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
我不明白它的作用。看起来这个人正在将一个字符串赋值给一个变量,但也有点像他在测试那个变量。我不理解这里的 && 和 || 的用法。有人能解释一下吗?
谢谢!
编辑:哇!真是太棒了!不过我需要花点时间去理解,我得打印出来或者什么的来研究。一旦我理解了发生了什么,我就能选择帮助我最多的答案。特别是这部分:
if ($target.length && $target) {
$target = $target;
这个问题困扰着我。程序如何知道将$target分配给$target?这个操作将$target分配给自己的第一个引用(等号左侧),还是分配给自己的第二个引用(&&之后的右侧)?
$target
保证是一个jQuery对象。 - Philundefined
,null
, 任何 falsy 值] 并且$target.length > 0
) 并且 ($target
不是 [undefined
,null
, 任何 falsy 值])) 那么 (将$target
分配给它自己(即$target
的已存在引用)) 否则 (将$target
分配给$('[name=' + this.hash.slice(1) +']')
)。 - Narendra Yadala