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ş:
Javascript: aynı pencere, yeni sayfa a...
Yenileme aynı url de yeni bir görüntü...
Aynı anda kısıtlamaları karşılamak içi...
angularjs filtre başka bir html ile ye...
Kolay yeni satır üzerinde bir dize böl...