SORU
24 Mayıs 2010, PAZARTESİ


Anahtar JavaScript dize eşleşen ifade

Nasıl aşağıdaki koşullu bir swtich yazacağım?

Urliçerir"", sonra Ayarlar.foo base_url"". bar

Aşağıdaki efekti elde edilir ama gerekli bir geçiş bu daha yönetilebilir olacağını hissediyorum:

var doc_location = document.location.href;
var url_strip = new RegExp("http:\/\/.*\/");
var base_url = url_strip.exec(doc_location)
var base_url_string = base_url[0];

//BASE URL CASES

// LOCAL
if (base_url_string.indexOf('xxx.local') > -1) {
    settings = {
        "base_url" : "http://xxx.local/"
    };
}

// DEV
if (base_url_string.indexOf('xxx.dev.yyy.com') > -1) {
    settings = {
        "base_url" : "http://xxx.dev.yyy.com/xxx/"
    };
}

CEVAP
24 Mayıs 2010, PAZARTESİ


Yapmadıktan switch bunu yapamazsıntamdize eşleşen; o işi yapıyoralteşleşen.(Bu değiloldukçaSean yorumlarda belirttiği gibi doğru. Sonundaki nota bakın.)

Eğer üzerine düzenli maç içinde karşılaştırmak için istemediğiniz her şey ayrılmasından mutlu iseniz, bir alt dize eşleştirme gerekmez, ve yapabileceği:

switch (base_url_string) {
    case "xxx.local":
        // Blah
        break;
    case "xxx.dev.yyy.com":
        // Blah
        break;
}

...ama yine, bu sadece bu çalışıyortamamlayındize eşleştirme. Eğer base_url_string, "yyy.olsaydı başarısız olurdu xxx.yerel" geçerli kodu olan maç için ise "xxx.yerel" şube.


GüncellemeTamam, yani teknik olarakolabiliralt dize eşleştirme için switch kullanın, ancak çoğu durumda tavsiye etmem. (live example) burada:

function test(str) {
    switch (true) {
      case /xyz/.test(str):
        display("• Matched 'xyz' test");
        break;
      case /test/.test(str):
        display("• Matched 'test' test");
        break;
      case /ing/.test(str):
        display("• Matched 'ing' test");
        break;
      default:
        display("• Didn't match any test");
        break;
    }
}

Özellikle switch statements work iki önemli yönleri JavaScript yolu nedeniyle çalışır: davaları kabul eden İlk,kaynak metinsipariş ve seçici ifadeler (anahtar sonra bit case) bu ikinciifadelerbu davayı değerlendirilir (değil sabit olarak başka bir dilde) değerlendirilir. Bu yüzden test ifadesi beri true, true sonuçları alışır bu tek olacak case ilk ifade.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012
  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010