JavaScript中eval()函数⽤法详解
eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执⾏。
如果参数是⼀个表达式,eval() 函数将执⾏表达式。如果参数是Javascript语句,eval()将执⾏ Javascript 语句。
语法
复制代码代码如下:
eval(string)
string必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执⾏的语句。
eval()函数⽤法详解:
此函数可能使⽤的频率并不是太⾼,但是在某些情况下具有很⼤的作⽤,下⾯就介绍⼀下eval()函数的⽤法。
此函数可以接受⼀个字符串str作为参数,并把此str当做⼀段javascript代码去执⾏,如果str执⾏结果是⼀
个值则返回此值,否则返回undefined。如果参数不是⼀个字符串,则直接返回该参数,实例如下:
eval("var a=1");//声明⼀个变量a并赋值1。
eval("2+3");//执⾏加运算,并返回运算值。
eval("mytest()");//执⾏mytest()函数。
eval("{b:2}");//声明⼀个对象。
在以上代码特别注意的是,最后⼀个语句是声明了⼀个对象,如果想返回此对象,则需要在对象外⾯再嵌套⼀层⼩括号,如下:
复制代码代码如下:
eval("({b:2})");
以上内容简单介绍了eval()函数的⽤法,⽐较容易理解。此函数最让⼈感到困惑的是关于它的作⽤域问题,下⾯就结合实例来介绍⼀下相关内容,先看⼀段代码实例:
function a(){
eval("var x=1");
javascript 函数
console.log(x);
}
a();
console.log(x);
在上⾯的代码中,第⼀个alert()函数能够弹出1,⽽第⼆个会因为x未定义⽽报错。
由以上表现可以得出,eval()函数并不会创建⼀个新的作⽤域,并且它的作⽤域就是它所在的作⽤域。这在所有主流浏览器都是如此,但是有时候需要将eval()函数的作⽤域设置为全局,当然可以将eval()在全局作⽤域中使⽤,但是往往实际应⽤中,需要在局部作⽤域使⽤具有全局作⽤域的此函数,这个时候可以⽤window.eval()的⽅式实现,例如以上代码可以改造如下:
function a(){
window.eval("var x=1");
console.log(x);
}
a();
console.log(x);
在上⾯的代码中,两个alert()语句都能够正常弹出1。但是此中⽅式在标准浏览器中是可以的,但是在IE8和IE8以下浏览器中的表现依然和eval()⼀样,作⽤域是它们所在的作⽤域。这个时候可以使⽤IE浏览器独有的Script()解决IE8和IE8浏览器的问题。为了实现兼容所有主流浏览器,把代码改造如下:
function a(){
Script){
}
else{
window.eval("var x=1");
}
console.log(x);
}
a();
console.log(x);
如果浏览器⽀持Script(),则使⽤此函数,不⽀持则使⽤window.eval(),这样就可以解决IE8和IE8以下浏览器的问题。
以上内容是⼩编给⼤家分享的JavaScript中eval()函数⽤法详解,希望⼤家喜欢。