在这篇博文中,我们将通过实例来学习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代码。请务必小心使用这个函数,因为它将导致无效的代码被注入其中,是不安全的。