博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eval函数知识总结
阅读量:5892 次
发布时间:2019-06-19

本文共 1292 字,大约阅读时间需要 4 分钟。

说道Json,我们先来聊聊eval

一、eval是什么?(解析器)

eval是一个函数,看本质function  eval() { [native code] }

 

二、怎样使用eval?

   语法:string 必需。要计算的字符串其中含有要计算的 JavaScript 表达式或要执行的语句。通过计算 string 得到的值(如果有的话)

    该方法只接受原始字符串作为参数,只接受一个参数

    如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。

     因此请不要为 eval() 函数传递 String 对象来作为参数。而应该是对象(

    如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

     如果非法调用 eval(),则抛出 EvalError 异常。

    如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

第一个例子: console.log(eval("1212")); //输出结果为1212;

第二个例子:  var msg="hello worle";

                   eval("alert(msg)");//  输出:hello world 传入参数当做实际的ECMAScript语句来执行;

                   相当于:alert(msg);

第三个例子:eval定义一个函数;

                  eval("function sayHi(){alert('hello wold')}");

                 sayHi();           //输出的结果是hello world  (运行机制:在解析代码的时候,它们包含在一个字符串中,它们只在eval()执行的时候的创建)

三、eval(”(执行的内容)”);加上圆括号的目的是迫使eval函数在运行JavaScript代码的时候强制将括号内的表达式转化为对象,而不是作为语句(statement)来执行

例如对象字面量{},如若不加外层的括号,eval会将大括号识别为JavaScript代码块的开始和结束标记,

那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:

eval('{}'); //undefined   JavaScript代码块的开始和结束标记  那么{}将会被认为是执行了一句空语句
console.log(eval('({})')); //object(){}  eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行

四、eval很强大,但是同样也有弊端

 (1)eval方法是在运行时对脚本进行解释执行,而普通的javascript会有一个预处理的过程。

  (2)eval通常用在一些需要动态执行字符串,或将字符串转为javascript对象的场景,比如将json字符串转为javascript对象。)

  (3)安全隐患

虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多

转载于:https://www.cnblogs.com/sharpest/p/7823295.html

你可能感兴趣的文章
创建实体类使用Hibernate
查看>>
异常处理汇总-开发工具
查看>>
[LeetCode] Excel Sheet Column Number 求Excel表列序号
查看>>
通过浏览器直接打开Android应用程序
查看>>
MVC调用SVC无法找到资源解决问题
查看>>
div加jquery实现iframe标签的功能
查看>>
解决Yapi 插件运行不支持文件上传的问题解决
查看>>
Windows路由表详解
查看>>
MySQL从库记录binlog日志出错一例
查看>>
2015年度扯淡
查看>>
phpcms2008列表页模板与内容页模板list.html show.html
查看>>
Java程序员从笨鸟到菜鸟之(八十四)深入浅出Ajax
查看>>
GNS3全面详解系列-GNS3的前世今生
查看>>
JDK 1.8.0_144 集合框架之CopyOnWriteArrayList
查看>>
linux 将大文件分成小文件
查看>>
CCNA- 距离矢量路由协议学习
查看>>
jira 配置 LDAP 访问
查看>>
Canonical发布Ubuntu server 11.10版本
查看>>
企业实践用户邮箱导入/导出(第2部分)
查看>>
我的友情链接
查看>>