再javascript中,eval()
的参数是一个字符串,eval()会将传入的字符串当做代码来执行,开发者可以通过这个函数来载入外部的javascript代码,活着随机生成Javascript代码并执行它,比如:
eval("alert('Hi!')");var count = 10;var number = eval("5 + count");console.log(number);
在Javascript中eval()并不是唯一可以执行Javascript字符串的函数,使用Function构造函数亦可以做到这一点,setTimeout()和setInterval()也可以,来看一些例子:
var myfunc = new Function("alert('Hi!')");setTimeout("document.body.style.background='red'",50);setInterval("document.title = 'It is now'" + (new Date()),1000);
在大多数Javascript社区中,人们都认为这些代码是最糟糕的实践。尽管在Javascript类库中eval()
,可能会经常用到(通常和JSON操作有关),另外三种用法即使也非常罕见。一个通用的原则是,禁止使用Function,并且只在别无他法时使用,eval()
。setTimeout和setInterval也是可以使用的,但不要用字符串形式而要用函数