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

  • Google

    Google

    18 EYLÜL 2005
  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011