JavaScript将变量声明为;g=g |{}&引用;这意味着什么?

JavaScript将变量声明为;g=g |{}&引用;这意味着什么?,javascript,variables,declaration,Javascript,Variables,Declaration,早上好,我在读JavaScript脚本库时遇到了这个问题 var g=g |{} 这意味着什么?如果为true,JavaScript将返回第一个参数,否则返回第二个参数。这相当于一个OR 因此,在您的示例中,如果未设置g,则将其设置为空对象。JavaScript返回第一个参数(如果为true),否则返回第二个参数。这相当于一个OR 因此,在您的示例中,如果未设置g,则将其设置为空对象。这是确保g实际初始化为对象的一种方法。这与: if(!g) g = {}; | |是一个OR。仅当第一个操作数

早上好,我在读JavaScript脚本库时遇到了这个问题

var g=g |{}


这意味着什么?

如果为true,JavaScript将返回第一个参数,否则返回第二个参数。这相当于一个OR


因此,在您的示例中,如果未设置g,则将其设置为空对象。

JavaScript返回第一个参数(如果为true),否则返回第二个参数。这相当于一个OR


因此,在您的示例中,如果未设置g,则将其设置为空对象。

这是确保g实际初始化为对象的一种方法。这与:

if(!g) g = {};

| |是一个OR。仅当第一个操作数的计算结果为false时,才会返回第二个操作数。

这是一种确保g实际初始化为对象的方法。这与:

if(!g) g = {};

| |是一个OR。仅当第一个操作数的计算结果为false时,才会返回第二个操作数。

以下描述取自

expr1 | | expr2 如果可以将expr1转换为true,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,| |如果任一操作数都可以转换为true,则返回true;如果两者都可以转换为false,则返回false


在您的情况下,如果
g
有一个(false/null/undefined/0/NaN/'/(document.all)[]),那么
g
将被设置为
{}

以下描述取自

expr1 | | expr2 如果可以将expr1转换为true,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,| |如果任一操作数都可以转换为true,则返回true;如果两者都可以转换为false,则返回false


在您的例子中,如果
g
有一个(false/null/undefined/0/NaN/'/(document.all)[]),那么
g
将被设置为
{}

这意味着,如果g是0/null/undefined,那么g将被定义为空对象

通常的做法是:

function foo(g) {
    // If the initial g does not defined, null or 0
    if(!g) {
      // Define g as an empty object
      g = {}
    }
}

这意味着,如果g为0/null/undefined,则g将被定义为空对象

通常的做法是:

function foo(g) {
    // If the initial g does not defined, null or 0
    if(!g) {
      // Define g as an empty object
      g = {}
    }
}

这就像如果g变量不存在,那么创建一个对象。将这两个变量都赋给g变量。就像如果g变量不存在,那么就创建一个对象。将两者都分配给g变量。谢谢。很好的解释。我不知道你能做到。10分钟后将标记为正确。谢谢。很好的解释。我不知道你能做到。通过10分钟后将标记为正确。。