Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能给我解释一下“逻辑”的范围吗;或;操作符在Javascript中工作?_Javascript_Logical Operators - Fatal编程技术网

有人能给我解释一下“逻辑”的范围吗;或;操作符在Javascript中工作?

有人能给我解释一下“逻辑”的范围吗;或;操作符在Javascript中工作?,javascript,logical-operators,Javascript,Logical Operators,这是我的密码 function getVowelCount(str) { let array = str.split(""); let vowelCount = array.reduce((acc, curr) => { if (curr === 'a' || curr === 'e' || curr === 'i' || curr === 'o' || curr === 'u') { acc++ } return acc }, 0); return vowe

这是我的密码

function getVowelCount(str) {
 let array = str.split("");
 let vowelCount = array.reduce((acc, curr) => {
   if (curr === 'a' || curr === 'e' || curr === 'i' || curr === 'o' || curr === 'u') {
     acc++
   } return acc
 }, 0);
 return vowelCount
}
我对编码是新手,我从Javascript开始。请有人解释一下为什么我不能在if语句中使用
“(curr==='a'| | e'| |'I'| |'o'| |'u')”
。我以为那会被处理成;“如果当前值为‘a’或‘e’或‘i’等


谢谢。

==
的操作顺序高于
|
。 相等顺序的运算符从左到右求值

(有关完整订单,请参阅)

因此,
curr==='a'| | | | | | | | | i'| | | | o'| | u'
相当于

(((curr=='a')|||'e')||'i')||'o')||'u')


可以简化为
curr==='a'?true:'e'

==
|
具有更高的操作顺序。 相等顺序的运算符从左到右求值

(有关完整订单,请参阅)

因此,
curr==='a'| | | | | | | | | i'| | | | o'| | u'
相当于

(((curr=='a')|||'e')||'i')||'o')||'u')


这可以简化为:
curr=='a'?true:'e'

就像数学有一个运算顺序(加/减之前的乘法/除法),
(curr=='a'| | | | | | | | | | | | | | | | | | | | | | | 124
,最高优先级是
===
,因此它从比较
curr==='a'
开始。这将导致
true
false
。让我们假设
false

接下来是所有的
|
。这些都是从左到右进行的,因此它比较
false | | e'
。除了空字符串外,每个字符串都是“truthy”,因此
false | | e'
也是truthy

它将继续向右移动,除非逻辑OR运算符在结果得到保证后会短路。因此,整个表达式是真实的


即使
| |
具有更高的优先级,它也不会起作用。对于
'a'| | e'
,这两个值都是“真实的”,因此它只需要第一个真实值,即
a
。这会重复,意思是
'a'| e'|'i'| o'| u'
是一种复杂的表达方式


console.log('a'||'e'|'i'|'o'|'u')
就像数学有一个运算顺序(加法/减法之前的乘法/除法)一样,最高优先级是
===
,因此它从比较
curr==='a'
开始。这将导致
true
false
。让我们假设
false

接下来是所有的
|
。这些都是从左到右进行的,因此它比较
false | | e'
。除了空字符串外,每个字符串都是“truthy”,因此
false | | e'
也是truthy

它将继续向右移动,除非逻辑OR运算符在结果得到保证后会短路。因此,整个表达式是真实的


即使
| |
具有更高的优先级,它也不会起作用。对于
'a'| | e'
,这两个值都是“真实的”,因此它只需要第一个真实值,即
a
。这会重复,意思是
'a'| e'|'i'| o'| u'
是一种复杂的表达方式


console.log('a'| | e'| | i'| | o'| | | u')
>“因此整个表达式是
true
。“--这当然是真实的,但我认为重要的是要注意,
|
链返回的第一个值是真实的,而不是
true
本身,因此在本例中,整个表达式是
'e'
,这是真实的(假设
curr='b'
或其他)。足够公平。更新。”所以整个表达式是
真的
。“--这当然是真实的,但我认为重要的是要注意,
|
链返回的第一个值是真实的,而不是
true
本身,因此在本例中,整个表达式是
'e'
,这是真实的(假设
curr='b'
或其他)。足够公平。更新。