Doğruyu veya yanlışı açık bir mantıksal değere dönüştürme


102

Bir değişkenim var. Hadi diyelim toto.

Bu totoşekilde ayarlanabilir undefined, nullbir dize veya bir nesnenin.

totoBir veriye ayarlanıp ayarlanmadığını, yani bir dizeye veya nesneye ayarlanıp ayarlanmadığını ve ne ne undefinedde olduğunu nullve başka bir değişkende karşılık gelen boole değerini ayarlayıp ayarlamadığını kontrol etmek istiyorum .

Şöyle !!görünecek sözdizimi düşündüm :

var tata = !!toto; // tata would be set to true or false, whatever toto is.

İlki if toto is or ve else !olarak ayarlanır ve ikincisi onu tersine çevirir.falseundefinednulltrue

Ama biraz tuhaf görünüyor. Peki bunu yapmanın daha net bir yolu var mı?

Bu soruya zaten baktım , ancak bir değişkende bir değer ayarlamak istiyorum, sadece bir ififadede kontrol etmek değil .


10
Bu soru kopya olarak işaretlenmiştir, ancak diğer soru stackoverflow.com/questions/263965/… 'ye bakarsanız oldukça farklıdır; hiç kopya değiller
Sam

@Sam Üzgünüm, ama bu kopyayı kendim doğruladım, bu diğer soruyu bilmiyordum ama sorunumu çözdü.
Aracthor

12
@Aracthor Bu bir kopya DEĞİLDİR, çünkü stackoverflow.com/questions/263965/… sadece "true" ve "false" kelimelerini içeren dizeyi Boolean muadillerine dönüştürmekle ilgilidir. Bu soru, HERHANGİ bir değişkeni, doğru veya yanlış olmasına bağlı olarak bir Boole'ye dönüştürmekle ilgilidir.
Alan McBee - MSFT

Yanıtlar:


161

Evet, bunu her zaman kullanabilirsiniz:

var tata = Boolean(toto);

Ve işte bazı testler:

for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) {
    console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`);
}

Sonuçlar:

Boolean(number 0) is false
Boolean(number 1) is true
Boolean(number -1) is true
Boolean(string 0) is true
Boolean(string 1) is true
Boolean(string cat) is true
Boolean(boolean true) is true
Boolean(boolean false) is false
Boolean(undefined undefined) is false
Boolean(object null) is false

76
Unutmayın, Boolean ("false"), muhtemelen yanlış olmasını istediğinizde doğrudur.
Sterling Bourne

46
Neden "yanlış" dizesinin yanlış olmasını istersiniz? Php bile bunu yapmaz: D
Danon

1
Demek istiyor Boolean("false").
Robo Robok

2
@NoahDavid Doğru döndürür. Atılan tek dize falseboş bir dizedir ( "").
Robo Robok

7
Kesinlikle. Bu nedenle, tırnak işaretleri içindeyse ve dolayısıyla String olarak yorumlanıyorsa "false" ifadesini kullanırken dikkatli olmalısınız. Onu yanlışa çevirdiğinizi düşünebilirsiniz, ancak aslında doğruya dönecektir - dolayısıyla orijinal uyarı.
Sterling Bourne

2

Sen kullanabilirsiniz Boolean(obj)veya !!objdönüştürmek için truthy/falsyiçin true/false.

var obj = {a: 1}
var to_bool_way1 = Boolean(obj) // true
var to_bool_way2 = !!obj // true
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.