2011-09-14 19 views
19

"Kısa üçlü" için PHP'nin desteğini aldım, ikinci ifadeyi atladım:Javascript PHP'deki gibi kısa üçlüyü (daha doğrusu varyasyon) destekliyor mu?

// PHP 

$foo = 'hello'; 
$bar = ''; 

echo $foo ?: 'world'; // hello 
echo $bar ?: 'world'; // world 

Javascript böyle bir sözdizimini destekliyor mu? Sözdizimi hatasıyla sonuçlanan ?:'ü denedim. Boole kısa devrelerinin farkındayım, ancak şu anda yapmakta olduğum için uygun değil; Bu:

// Javascript 

var data = { 
    key: value ?: 'default' 
}; 

Herhangi bir öneri? ( Hemen çağrılan anonim bir işleve sarılabilirdim, ama bu aptalca görünüyor)

+0

@NullUserException - jQuery kullanıyorum ve I * iken * önbellek benim seçimleri yapmak, varsayılan olmayan değer .data() '' yapılan çağrının sonucudur ve ben sadece önerilen sözdizimini kullanarak ikinci bir çağrıdan kaçınmaya çalışmak (* ve geçici bir değişkende değeri saklamaktan kaçınmak *) – Dan

cevap

35
var data = { 
    key: value || 'default' 
}; 
+0

Nifty! Teşekkürler @SomeGuy - Bu garip görünüyor olsa da, Javascript (* okuyun, herhangi bir dil *) böyle bir karşılaştırma bir boole olmayan dönecektir. Demek istediğim, gevşek bir şekilde yazıldığını biliyorum. – Dan

+0

Varsayılan değerlere izin vermeye çalışıyorsanız, ['$ .extend'] (http://api.jquery.com/jQuery.extend/) çok kullanışlı bir işlevdir. – zzzzBov

+1

@Bracketworks: Boolean operatörleri pek çok (özellikle işlevsel) dilde boole dönüş yapmazlar. Operatörün bir tarafına geri dönecekler (veya 'false'). – NikiC

12

Evet, || kullanmak (Ben hemen çağrılan anonim fonksiyon içine olabilir, ama bu saçma görünüyor). PHP'nin aksine, JavaScript'in || operatörü, normal olmayan bir boolean değil, ilk falsi olmayan değeri döndürecektir.

foo || 'world' 
+0

Teşekkürler @jimbojw - SomeGuy bununla birlikte dövdü :) – Dan

+3

Evet, bu, sadece cevabı yazmaktan ziyade açıklamak için ödediğim bedel. – jimbojw

+1

'var foo = foo' = _ = – Leonid

0
var myFunc = function(foo) { 
    foo = foo || 'my default value for foo'; 
}