Boole'lardaki bitsel işleçlerin, JavaScript'te boole döndürmediği zor yolu öğrendim. Bunun bir hata olması gerektiğini düşündüm, ama ECMAScript'inde bunu inceledim ve eminim ki, bitlik operatörler boole değil, sayıları döndürüyorlar. Boolean değerlerinde kullandığınızda ortaya çıkan gariplik hakkında bir şey söylemez. Neden bu şekilde yapılır? Bu tekniği yıllarca başka dillerde kullandım, bu yüzden JavaScript’de neden farklı bir şey yaptığını tamamen şaşırdım. Herhangi bir fikir? Bu, hiç kimsenin bu şekilde bitly operatörleri kullanmadığı mı (hariç) yoksa teknik bir neden var mı? Türü kontrol edip bir boole döndürmenin zor olacağını hayal edemiyorum.JavaScript: neden booleanların bitwise VEYA boolean yerine bir sayı döndürüyor?
referans, aşağıdaki kod:
var found = false;
console.log(found, typeof(found));
found |= true;
console.log(found, typeof(found));
found = true;
console.log(found, typeof(found));
aşağıdaki çıktı üretir:
false 'boolean'
1 'number'
true 'boolean'
Düzenleme:
isteğe göre, bir C kullanmışlardır, C++, ve eminim ki PHP, bunun üzerine küfür etmesem de. Evet, C/C++ 'un yazıldığını biliyorum, bu yüzden dahili olarak farklı olurdu. Sadece JavaScript'in neden farklı davranacağını merak ediyorum. Talep üzerine
, ben genellikle kullanmak bir örnek | belirtilmesine için bitsel operatörleri (her zaman sayılara onların işlenen dönüştürmek) sürekli davranmaya Having =
var foundLowest = false;
for(var k = 0; k < someLength; ++k) {
foundLowest |= someFunctionThatReturnsTF(k);
}
if(foundLowest === true) {
/* do stuff */
}
Eğer' gerçek bir kullanım durumunda bazı örnek ekleyebilir miyim? –
Bu konuda, söylediğin hangi dilde booleanlarla '| =' destekliyor? –
Booleanlar için bile, sayısal değerleri her zaman döndürmek için bitsel işlemleri düşünürdüm; kaput altında düşünürsek, sayısal olarak kendilerini eşitler. Neden bir boole dönüş değeri beklerdiniz? –