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ş:
Yenileme aynı url de yeni bir görüntü...
Javascript: aynı pencere, yeni sayfa a...
= var functionName function() {} vs fu...
Hareket Gıt ile yeni bir şube için en ...
Uzak bir Git repo için yeni bir yerel ...