javascript - 我需要帮助理解 javascript ||。是否为逻辑 'OR'

标签 javascript

很抱歉,如果被问及回答,但我的所有搜索都返回有关逻辑 OR 的信息,并没有澄清情况。

我完全理解'|'与'||'在大多数语言中,但这让我陷入困境。我接触过javascript,但我对它知之甚少,下面的代码让我感到困惑。

:
a = a || document;

// HANDLE: $(function)
// Shortcut for document ready
if ( jQuery.isFunction(a) )
    return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a );
:

在大多数情况下,我理解“a = a || document;”如果其中一个有效则返回“true”,如果两者均为 null、0 等则返回 false...

我对下面的代码有同样的问题。

:
jQuery.fn.height = function() {
if ( this[0] == window )
    return self.innerHeight ||
        jQuery.boxModel && document.documentElement.clientHeight ||
        document.body.clientHeight;

if ( this[0] == document )
    return Math.max( document.body.scrollHeight, document.body.offsetHeight );

return this._height(arguments[0]);};
:

以下如何产生高度值?或者是吗?

:
    if ( this[0] == window )
    return self.innerHeight ||
        jQuery.boxModel && document.documentElement.clientHeight ||
        document.body.clientHeight;
:

最佳答案

来自 MDN :

expr1 || expr2

(Logical OR) Returns expr1 if it can be converted to true; otherwise, returns expr2. Thus, when used with Boolean values, || returns true if either operand is true; if both are false, returns false.

它会先计算表达式的左边,如果结果可以转换为true,它就停在那里。否则,它将计算并返回表达式的右侧。

换句话说,它既可以用作一种控制结构,也可以用作 bool OR 运算符。它可以用作类似这样的东西的简写

var result = <expr1>;
if (!result) result = <expr2>;

文档继续提供一些有用的示例:

var o1 =  true || true;     // t || t returns true
var o2 = false || true;     // f || t returns true
var o3 =  true || false;    // t || f returns true
var o4 = false || (3 == 4); // f || f returns false
var o5 = "Cat" || "Dog";    // t || t returns Cat
var o6 = false || "Cat";    // f || t returns Cat
var o7 = "Cat" || false;    // t || f returns Cat

关于javascript - 我需要帮助理解 javascript ||。是否为逻辑 'OR',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579424/

相关文章:

javascript - 本地文件中的 ES6 模块 - 服务器使用非 JavaScript MIME 类型进行响应

javascript - attachEvent 或 addEventListener - 存储在哪里?

javascript - 使用 bodyParser 和 Router() 无法检索表单输入

javascript - ES6 类,传递函数作为参数来注册 expressjs 路由

javascript - 使用 React 和 Redux 的分形项目结构 - 优点/缺点

javascript - 当用户与站点交互时禁用自动滚动 'scrollToBottom' 功能

javascript - 如何在 Angular 单击按钮时将列表滚动到顶部?

javascript - Grunt 服务器如何正确设置主机名和虚拟主机?

javascript - 从外部 javascript 文件中读取 var 并将其转换为 php 变量

javascript - 编译 React 失败