Javascript Can&&;两个对象之间的运算符使用?我们会得到什么结果?

Javascript Can&&;两个对象之间的运算符使用?我们会得到什么结果?,javascript,Javascript,如果&&运算符的左侧为truthy,则表达式将作为运算符的右侧求值 (如果LHS为falsy,则评估为LHS) 由于所有对象都是真实值,因此您描述的场景将作为RHS进行评估。因此: function getParent($this) { var selector = $this.attr('data-target') //The jQuery attr() method is also used to set/change attribute values. //for ie7

如果
&&
运算符的左侧为truthy,则表达式将作为运算符的右侧求值

(如果LHS为falsy,则评估为LHS)

由于所有对象都是真实值,因此您描述的场景将作为RHS进行评估。因此:

function getParent($this) {
    var selector = $this.attr('data-target') //The jQuery attr() method is also used to set/change attribute values.

    //for ie7
    if (!selector) {
      selector = $this.attr('href')
      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
    }

    var $parent = selector && $(selector)

    return $parent && $parent.length ? $parent : $this.parent()
}

&&
操作员将检查LHS值是否为真,否则检查RHS是否为真

如果在赋值运算符中使用该选项,则功能仍然相同。它将查看LHS和RHS是否真实(不应为null、未定义、false、NaN、Infinity”或0),并将RHS分配给变量。如果没有,它将指定第一个falsy值

(someObject && someOtherObject) === someOtherObject

只是测试一下?这个问题还不值得问。仅仅因为你能做一些事情并不意味着你应该做。这将使调试/读取代码成为一场噩梦。您不必担心编写超短JS,因为您可以在以后通过一个缩微器/丑八怪运行它。
'a' && 'b'  => 'b'
3 && false => false
null && 'a' => null
'' && true => ''
true && 3 => 3
(() => true)() && 9