JavaScript中&和&&之间的区别是什么?
例如,代码:
var first  = 123;
var second = false;
var third  = 456;
var fourth = "abc";
var fifth  = true;
alert(first & second); // 0
alert(first & third);  // 72
alert(first & fourth); // 0
alert(first & fifth);  // 1
alert(first && second); // false
alert(first && third);  // 456
alert(first && fourth); // abc
alert(first && fifth);  // true
似乎&&是一个逻辑"和",如果两者都是真的,它总是给我第二个值.
但是什么是&?
(顺便说一句,&&似乎是Python中的"和";&似乎是&在Python中.)
我知道在JavaScript中你可以这样做:
var oneOrTheOther = someOtherVar || "these are not the droids you are looking for...";
其中变量oneOrTheOther将在第一表达式的值,如果它不是null,undefined或false.在这种情况下,它被分配给第二个语句的值.
但是,oneOrTheOther当我们使用逻辑AND运算符时,变量会分配给什么?
var oneOrTheOther = someOtherVar && "some string";
什么时候会发生someOtherVar非假的?假的
时候会发生什么someOtherVar?
只是学习JavaScript,我很好奇与AND运算符一起分配会发生什么.
javascript variable-assignment logical-operators and-operator
我读了一些遗留代码:
if ( 1 || !Foo() )
是否有任何理由不写:
if ( !Foo() )
假设myObj为null.写这个是安全的吗?
if(myObj != null && myObj.SomeString != null)
我知道有些语言不会执行第二个表达式,因为在执行第二个部分之前&&的计算结果为false.
我正在重新开始进行Web开发,并且最近一直试图重新审视jscript的细微差别.我正在通过构建在Three.JS之上的THREEx扩展库的源代码,并注意到了这个功能
THREEx.KeyboardState.prototype.pressed  = function(keyDesc)
{
    var keys    = keyDesc.split("+");
    for(var i = 0; i < keys.length; i++){
        var key     = keys[i];
        var pressed;
        if( THREEx.KeyboardState.MODIFIERS.indexOf( key ) !== -1 ){
            pressed = this.modifiers[key];
        }else if( Object.keys(THREEx.KeyboardState.ALIAS).indexOf( key ) != -1 ){
            pressed = this.keyCodes[ THREEx.KeyboardState.ALIAS[key] ];
        }else {
            pressed = this.keyCodes[key.toUpperCase().charCodeAt(0)];
        }
        if( !pressed)   return false;
    };
    return true;
}
我特别关注这里的线路:
if( THREEx.KeyboardState.MODIFIERS.indexOf( key ) !== -1 ){
我不熟悉这个!==运算符.我检查了w3schools,他们的逻辑运算符列表中没有包含这个.我不确定这是否拼写错误,浏览器只是将其视为!=或者它是否有其他含义.另外我想知道这实际上是一个逻辑运算符还是它是某种组合,比如!+ ==?
为什么这些逻辑运算符返回一个对象而不是布尔值?
var _ = (obj.fn && obj.fn() ) || obj._ || ( obj._ = {} );
var _ = obj && obj._;
我想理解为什么它返回obj.fn()(如果已定义)OR的obj._结果,但不返回布尔结果.
可能重复:
|之间的差异是什么 和|| 还是运营商?
逻辑AND和OR:
(x & y)
(x | y)
条件AND和OR:
(x && y)
(x || y)
到目前为止,我只知道条件操作数.我知道它的作用以及如何在if语句中应用它.但逻辑操作数的目的是什么?
我有一个bash脚本检查平台上的CPU数量,以有效地使用-jmake,repo等选项.我使用这个:
JOBS=$(cat /proc/cpuinfo | grep processor | tail -1 | sed "s,^.*:.*\([0-9].*\)$,\1,")
echo -e "4\n$JOBS" | sort -r | tail -1
它工作正常.但是,我想知道是否有任何内置函数执行相同的操作(即计算最小值或最大值)?
好的,所以我已多次阅读过这篇文章,但我还没有听到一种清晰,易懂(且令人难忘)的方法来了解它们之间的区别:
if (x | y)
和
if (x || y)
..在C#的背景下.任何人都可以帮助我学习这个基本事实,以及C#如何具体地对待它们(因为它们似乎做同样的事情).如果给定代码片段之间的差异是无关紧要的,我应该将其默认为最佳实践?
{
    int i = 1;
    if (i++ && (i == 1))
        printf("Yes\n");
    else
        printf("No\n");
}
根据我的理解,在if条件中,首先i==1将对应该返回的expression()进行求值1,然后在逻辑上对其进行求1值i,因此表达式应该返回1 && 1 == 1,但是else部分被执行.
有人可以解释else部分执行的原因吗?
javascript ×4
c# ×3
c ×2
if-statement ×2
syntax ×2
.net ×1
and-operator ×1
bash ×1
c++ ×1
operators ×1