javascript/typescript:预定义函数eval()的应用实例

1,017 阅读2分钟

在这篇博文中,我们将通过实例来学习javascript/typescript预定义函数eval()。

eval()函数 - Javascript|Typescript

eval是javascript中一个预定义的全局函数。它以Javascript代码的形式执行字符串。它接收输入的字符串,并返回Javascript表达式代码的输出字符串。代码可以是变量、对象,以及javascript用这个函数执行的对象。

这个函数可以在javascript和Typescript中使用,因为Typescript是javascript编程语言的一个超集。

语法

eval()

参数代码是一个javascript表达式或单个/多个语句。如果参数是一个表达式,那么这些表达式就用单引号括起来;如果参数是javascript语句,它就执行表达式;如果语句的参数是算术表达式,它就执行算术表达式。

例子

下面是使用eval()函数的不同例子

Javascript脚本代码算术字符串的评估

这是一个简单的算术表达式代码,我们可以用eval函数来传递。表达式被评估并返回输出结果

var temp = 6;  
console.log(eval('temp + 51')) // output is 57  
var temp = 5;  
alert( eval('(x + 4) - 2')); // output is 7  

使用eval动态地创建和调用一个函数

下面的代码动态地创建了doubleFunction函数。以字符串的形式创建函数声明代码,并使用字符串的eval函数。最后,像普通函数一样调用这个动态函数

var strDoubleFunction = "function doubleFunction(parameter) { return parameter* parameter; }";  
eval(strDoubleFunction);  
console.log(doubleFunction(5)); // 25  
console.log(doubleFunction(4)); // 16  

使用eval的javascript语句声明

在这个例子中,我们可以动态地声明多个javascript语句

var strStatements = "var t1=20;var t2=30;";  
eval(strStatements);  
console.log(t1); // 20  
console.log(t2); // 30  

Eval JSON解析--将字符串转换为JSON

如果eval函数包含一个JSON数据的字符串,建议使用JSON.parse()函数。

var strJson = '({"id":"1","name":"cloudhadoop"})';  
var jsonObj = eval(strJson);  
console.log(jsonObj.id)// 1   
console.log(jsonObj.name)// cloudhadoop 

使用本地上下文和全局上下文进行评估

默认情况下,如果没有一个窗口对象,它将创建一个本地上下文。在本地上下文中,它将只在本地范围内创建变量和对象。对于使用全局范围,你可以使用窗口对象和eval函数,如window.eval()
eval函数是邪恶的
在浏览器中以字符串的形式评估javascript代码。请务必小心使用这个函数,因为它将导致无效的代码被注入其中,是不安全的。