2011-06-24 23 views
5

1: Neden foo && baz sonucu 1 değil? Gerçek Çünkü 1.Bu iki javascript örneğini açıklar mısınız?

var foo = 1; 
var baz = 2; 

foo && baz; // returns 2, which is true 

2 geçerli: console.log(foo + +bar); iki artıları, bunların anlamı ne? && (mantıksal VE) operatörü bunu değerlendirdi geçen işlenen değerini verir çünkü var

var foo = 1; 
var bar = '2'; 
console.log(foo + +bar); 
+0

Bunlar iki ayrı soru, bunlar muhtemelen ayrılmalıdır. – Orbling

+5

Bu javascript değil jQuery'dir. – Jazaret

cevap

10

. foo, true olduğundan, ifadenin sonucunu belirlemek için bar değerini değerlendirmek zorundadır (bar da true ise true olacaktır).

Aksi, || (mantıksal OR) operatörüyle gerçekleşir. Bu durumda, footrue olduğundan, ifadenin sonucunun bar değerini değerlendirmek zorunda kalmadan true olduğu bilinir, bu nedenle foo değeri döndürülür.

İkinci sorunuzla ilgili olarak, + işleci, '2' dizgesini 2 numaralı numaraya dönüştürmeyi sağlar.

4

&&, son değerlendirilen değerin değerini döndürür. ´ & & ´ bir operatördür. diğer bir deyişle

0 && 2 //would return 0 because 0 is a falsy value 
12 && 10 && 0 && 100 // would return 0 to 
10 && 123 && "abc" // returns "abc" 

+ bu

if (something && somethingelse) {} 

gibi bir bağlamda kullanılan Çoğu zaman matematiksel bir operatör ama bir numaraya bir dize dönüştürmek için kullanılabilir.

1 + 1 = 2 
1 + '1' = 11 //van damme would like this one 
1 + +'1' = 2 // somce '1' got converted to a number 
+0

+ '1' artı '1' öncesi dönüştürme karakteri mi? haklı mıyım – runeveryday

+1

Bunun için bir şey olduğunu düşünmüyorum, ama işe yarıyor. Örneğin parseInt ('1') kullanabilirsiniz. – meo

İlgili konular