在PHP代码中
if(a() && b())
Run Code Online (Sandbox Code Playgroud)
当第一个操作数求值时false,b()将不会被求值.
同样地,在
if (a() || b())
Run Code Online (Sandbox Code Playgroud)
当第一个操作数计算到true,b()将不会被评估..
这适用于所有语言,如Java,C#等吗?
这是我们使用的测试代码.
<?php
function a(){
echo 'a';
return false;
}
function b(){
echo 'b';
return true;
}
if(a() && b()){
echo 'c';
}
?>
Run Code Online (Sandbox Code Playgroud) 在Python中,对于字典d,
d.setdefault('key', value)
Run Code Online (Sandbox Code Playgroud)
套d['key'] = value如果'key'不在d,否则离开它,因为它是.
有没有一种干净,惯用的方法在Javascript对象上执行此操作,还是需要if声明?
我正在使用match和length属性检查字符串中的位数.这是我的函数http://codepen.io/PiotrBerebecki/pen/redMLE的codepen
最初在返回时numberOfDigits.length我收到一条错误消息(Cannot read property 'length' of null).我已经通过将行更改为来解决了这个问题(numberOfDigits && numberOfDigits.length).这有效,但我想更好地理解为什么现在可以执行新语句.解释器现在是否执行`numberOfDigits.length?
另外,为什么在操作数反转时我们会得到相同的错误(numberOfDigits.length && numberOfDigits)?
这是完整的JavaScript代码:
function checkLength(str) {
let numberOfDigits = str.match(/\d/g);
return (numberOfDigits && numberOfDigits.length);
}
console.log( checkLength('T3xt w1th sOme numb3rs') );
console.log( checkLength('Text with some numbers') );
Run Code Online (Sandbox Code Playgroud)
更新1: 以下答案解释说:
&&表达式中操作数的顺序计数.&&运算符,如果第一个操作数的计算结果为null,则JavaScript不会检查第二个操作数,因为表达式不能除了null/ 之外的其他值false.在JavaScript中,AND/OR运算符如何实际处理?我想知道哪些是更高效的,或者他们是否在内部做同样的事情:
例A
if ( conditionA && conditionB ) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
例B
if ( conditionA ) {
if ( conditionB ) {
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
将实施例A只评价conditionB如果conditionA是truthy,或将它总是被评估,因此需要更长的时间来执行(在conditionA IS truthy的情况)比实施例B?
我知道===运算符用于确定它的两个操作数是否相等和相同.也就是说,如果左侧操作数为1,则右侧操作数必须为1才能返回true.但我不明白为什么javascript为此计算返回true.
true || 1 === 1/3;
//true;
Run Code Online (Sandbox Code Playgroud)
我不知道这个结果在javascript中是如何真实的.