SORU
5 Ocak 2011, ÇARŞAMBA


Eval() ve yeni Function() aynı şey mi?

Bu iki işlevi yapıyor perde arkasında aynı şey mi? (tek deyim fonksiyonları)

var evaluate = function(string) {
    return eval('('   string   ')');
}

var func = function(string) {
    return (new Function( 'return ('   string   ')' )());
}

console.log(evaluate('2   1'));
console.log(func('2   1'));

CEVAP
5 Ocak 2011, ÇARŞAMBA


Hayır, onlardeğilaynı.

  • eval() geçerli yürütme kapsamında bir JavaScript ifadesi bir dize olarak değerlendirir ve yerel değişkenler erişebilirsiniz.
  • new Function() JavaScript kodu o zaman denilecek bir işlev bir nesne içine bir dize, içinde saklı ayrıştırır. Kodu ayrı bir kapsamda çalıştığı için erişim yerel değişkenler olamaz.

Bu kodu göz önünde bulundurun:

function test1() {
    var a = 11;
    eval('(a = 22)');
    alert(a);            // alerts 22
}

Eğer new Function('return (a = 22);')() kullanılması durumunda, yerel değişken a değerini koruyacak. Bununla birlikte, Douglas Crockford gibi bazı JavaScript programcılar ** 10 ve evaling/güvenilmeyen veri Function oluşturucu kullanarak sürece neither should be used güvensiz ve akıllıca olduğuna inanıyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011