2012-12-23 16 views

cevap

5

bir işlev denir: bunu gerçekleştirmenin eval(x) kullanabilirsiniz kodu içeren zaten dize olduğunu

function x() { 
    console.log('Alive!'); 
} 

x edin. eval olsa da kötülüktür.

10

Aradığınız ürün eval(). Bu işleve bir dize ileterek, dizeyi JavaScript kodu olarak değerlendirirsiniz ve dize içindeki kodun geri döndürdüğü değeri döndürür.

Bu işlevi kullanırken dikkat edin. Bilmediğiniz herhangi bir kodu değerlendirmek istemediğiniz için güvenlidir. Örneğin, kullanıcı tarafından oluşturulan kod çalıştırmak, yaptığınız her şeyi bozabilir. Bunu bir web sitesinde JavaScript’te kullanırken, muhtemelen yalnızca istemci tarafında sorunlara yol açacaktır ve bu nedenle büyük olasılıkla bir güvenlik tehdidi olmayacaktır, örneğin bir sunucu tarafındaki kodu değerlendirirken ÇOK dikkatli olmak istersiniz.

Diğer yayınlarda burada belirtildiği gibi, çalıştırılacak kaynak kodun denetimindeyseniz, muhtemelen değerlendirilen bir dize yerine bir işlev yapmak isteyebilirsiniz.

+0

Yanıtlarınız için herkese teşekkürler, aradığım şey budur. Sorun şu ki, document.write kullanan ve web sayfasının tamamının üzerine yazan bir betiğin içeriğini yürütüyorum. Bunun üzerine nasıl çalışabilirim ve sadece html belgesine eklenen elemanlara sahip olurum ve tamamen başkalarının üzerine yazmazlar mı? Gues thats tamamen farklı bir topi ama benim sahip olduğum değerlendirme sorusunu yeniden canlandırdığın için teşekkürler! –

+0

Evet, bu tamamen yeni bir konu ancak burada sorununuzu hızlı bir şekilde açıklıyor: 'document.write' her zaman sayfayı temizler ve belge tamamen yüklendikten sonra çalıştırıldığında yeni bir sayfa oluşturur. Böylece, bunun yerine 'innerHTML 'kullanmanız gerekir. İçeriğinizi düzenlemek istediğiniz bir öğeyi 'document.getElementById()' gibi bir şeyle getirin ve 'element.innerHTML =" output "' yapın. –

+0

@AndreasHagen: Sayfada DOM düğümleri yoksa, “document.writeln” tüm sayfayı silmeden tek bir satır yazar. –

10

eval() Bu, dizeyi javascript koduna dönüştürür.

eval("console.log('Alive!')";); 
İlgili konular