我大体知道这个函数会做什么,但还是不清楚它到底有什么用,想了解一下它的应用场景
业精于勤,荒于嬉;行成于思,毁于随。
对 eval 的态度应该是:学习它,并远离它。
AJAX 中当服务器端通过这种方式访问数据给请求者的时候:
echo '{"error":0;"msg":"OK"}';
客户端的 Javascript 可以这样获取:
eval("var result=" + ajaxResponseContent); //其中 ajaxResponseContent = {"error":0;"msg":"OK"}
接着可以这样判断:
if (result.error != 0) {/*.....*/}
1 eval函数的原义是 使之执行 这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。
假设后台输出json字符串response 前台使用 var json = eval("(" + response + ")");
var json = eval("(" + response + ")");
如果严谨点 我们可以加一个判断
var jsonData = "";
if (typeof (data) === "string" && data != "null") { if (data == "") data = "{}"; jsonData = eval("(" + data + ")"); }
2 这时 我们认为 eval的作用就是将json string转为js对象
我支持避免使用eval,故而可以说它没什么应用场景。 能够用eval实现的功能都可以用替代的方式实现(不是我说的,但是我同意) 比如JSON.parse(JSON对象解析),比如new Function()(执行特定代码)
大部分不支持使用eval的原因有: 1、性能不好 2、不安全 3、产生混乱的代码逻辑
对 eval 的态度应该是:学习它,并远离它。
AJAX 中当服务器端通过这种方式访问数据给请求者的时候:
客户端的 Javascript 可以这样获取:
接着可以这样判断:
1 eval函数的原义是 使之执行 这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。
假设后台输出json字符串response 前台使用
var json = eval("(" + response + ")");
如果严谨点 我们可以加一个判断
if (typeof (data) === "string" && data != "null") { if (data == "") data = "{}"; jsonData = eval("(" + data + ")"); }
2 这时 我们认为 eval的作用就是将json string转为js对象
我支持避免使用eval,故而可以说它没什么应用场景。 能够用eval实现的功能都可以用替代的方式实现(不是我说的,但是我同意) 比如JSON.parse(JSON对象解析),比如new Function()(执行特定代码)
大部分不支持使用eval的原因有: 1、性能不好 2、不安全 3、产生混乱的代码逻辑