相关疑难解决方法(0)

所有编程语言都有布尔短路评估吗?

在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)

language-agnostic if-statement short-circuiting

38
推荐指数
7
解决办法
9890
查看次数

Javascript相当于Python的dict.setdefault?

在Python中,对于字典d,

d.setdefault('key', value)
Run Code Online (Sandbox Code Playgroud)

套d['key'] = value如果'key'不在d,否则离开它,因为它是.

有没有一种干净,惯用的方法在Javascript对象上执行此操作,还是需要if声明?

javascript dictionary

21
推荐指数
5
解决办法
7315
查看次数

为什么我在检查null的长度时没有收到错误

我正在使用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: 以下答案解释说:

  • &&表达式中操作数的顺序计数.
  • JavaScript优化了&&运算符,如果第一个操作数的计算结果为null,则JavaScript不会检查第二个操作数,因为表达式不能除了null/ 之外的其他值false.

javascript null logic string-length logical-operators

8
推荐指数
1
解决办法
280
查看次数

JavaScript中&&运算符的性能

在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?

javascript performance operators

2
推荐指数
1
解决办法
107
查看次数

为什么true || 1 === 1/3在JavaScript中返回true

我知道===运算符用于确定它的两个操作数是否相等和相同.也就是说,如果左侧操作数为1,则右侧操作数必须为1才能返回true.但我不明白为什么javascript为此计算返回true.

true || 1 === 1/3;

//true;
Run Code Online (Sandbox Code Playgroud)

我不知道这个结果在javascript中是如何真实的.

javascript

0
推荐指数
1
解决办法
221
查看次数