定义和用法

eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。

如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句(代码)。

语法

eval(string)

参数:

  • string——必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

说明

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

抛出

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

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

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

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

实例

eval("x=10;y=20;console.log(x*y)"); // 200
console.log(eval("2+2")); // 4
console.log(eval(x+17)); // 27
console.log(eval(18)); // 18
// 相当于直接调用console.log
let msg = "hello world";
eval("console.log(msg)"); // hello world
// 相当于函数声明
eval("function sayHi() { console.log('hi'); }");const obj = {a: {b: {c: 1,}}
}
function get(str) {console.log(eval(str)) // 1,相当于console.log(obj.a.b.c)
}
get('obj.a.b.c')

作用域

function a(){eval( "var x=1" )console.log(x) // 1
}
a()
console.log(x) // 报错,x is not defined

eval()函数并不会创建一个新的作用域,并且它的作用域就是它所在的作用域。这在所有主流浏览器都是如此,但是有时候需要将eval()函数的作用域设置为全局,当然可以将eval()在全局作用域中使用,但是往往实际应用中,需要在局部作用域使用具有全局作用域的此函数,这个时候可以用window.eval()的方式实现:

function a(){window.eval( "var x=1" )console.log(x) // 1
}
a()
console.log(x) // 1

总结

eval是JS中最强大的方法之一,它就像一个完整的ECMAScript解析器,它会根据ECMAScript语句对字符串进行解析和计算。

JS的eval()方法相关推荐

  1. js中eval方法的使用

    2.js中eval方法的使用 eval可以执行传入的字符串,比如:eval("console.log('eval test!')"),控制台直接会输出"eval test ...

  2. java script eval_「eval」js中的eval方法详解(一)–eval方法的初级应用 - seo实验室...

    eval 在我看来,js中的eval()方法就是一个js语言的执行器,它能把其中的参数按照javaScript语法进行解析并执行. 语法: eval(s); eval()方法中的参数s有多种情况.参数 ...

  3. js中的Eval方法

    eval 方法 检查 JScript 代码并执行. eval(codeString) 必选项 codestring 参数是包含有效 JScript 代码的字符串值.这个字符串将由 JScript 分析 ...

  4. java js隐藏_Javascript匿名函数是否仍然可见? (使用Java applet,这是一种隐藏JS代码的方法)...

    我正在使用Javascript编写应用程序.我正在寻找一种隐藏代码的方法,我想我已经找到了一个使用Java Applet的代码. 无论如何,我认为只有在评估js匿名函数的代码后仍然无法以任何方式访问它 ...

  5. 原生js调用json方法

    原文链接 Ajax基础 ajax:无刷新数据读取,读取服务器上的信息 HTTP请求方法: GET:用于获取数据,如浏览帖子 ajax.judgeXmlHttpRequest('get', 'index ...

  6. js使用eval解析json(js中使用json)

    eval的用法eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句,下面给出eval解析json的示例 先来说eval的用法,内容比较简单,熟悉的可以跳过 eval函数接收一个参 ...

  7. Node.js与Sails~方法拦截器policies

    policies sails的方法拦截器类似于.net mvc里的Filter,即它可以作用在controller的action上,在服务器响应指定action之前,对这个action进行拦截,先执行 ...

  8. twig 调用php函数,twig里使用js变量的方法

    本文实例讲述了twig里使用js变量的方法的方法.分享给大家供大家参考,具体如下: 先看一段代码 这个ajax请求的地址,无法正常正常访问. 这段代码里 jQuery("#my_input& ...

  9. js解决异步的方法汇总

    js解决异步的方法汇总 参考文章: (1)js解决异步的方法汇总 (2)https://www.cnblogs.com/yunshangwuyou/p/9631914.html 备忘一下.

最新文章

  1. c python.h_C++/C语言Python H
  2. json中怎么去掉[]外的引号_SEO优化中怎么做站内和站外的锚文本
  3. python剑指offer 包含min函数的栈
  4. php ip 省份,PHP有没有生成国内各省份IP地址的类库?
  5. 【资源】福利来了!生物学相关常用软件小工具,百度云下载链接持续更新中...
  6. SQLServer 数据库主体在该数据库中拥有 架构,无法删除解决方法
  7. 项目经理如何才能快速成长?
  8. 动态规划:任务调度问题(双塔问题)
  9. Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory Android
  10. 冰原服务器维护,12月2日服务器公告 冰原旅途进发
  11. Security+ 学习笔记37 脚本和命令行
  12. FMDB在Swift中的基本使用
  13. .NET core ABP 获取远程IP地址
  14. Android 蓝牙终端交互管理
  15. 一步一步学Repast 第二章(把界面显示出来2)
  16. 宇视服务器硬件如何安装,宇视科技无需后端平台与服务器支撑 即可形成小型人脸识别方案...
  17. mybatis与spring结合
  18. 4K分辨率火狐浏览器宋体过细解决方法
  19. 干货 | 数据思维在携程商旅页面性能优化中的一次实践
  20. 如何自己制作简历模板?简历在线制作的方法介绍

热门文章

  1. 2023年软件测试行业还值得入行吗?
  2. 互动媒体技术——创意编程
  3. 硬盘哨兵linux版,硬盘哨兵(Hard Disk Sentinel Pro)
  4. 【CODE[VS]】2750--心系南方灾区
  5. 压测工具Jmeter简单入门教程
  6. 7-83 币值转换 (20分)
  7. 交换机ACL访问控制列表举例说明
  8. 数字信号处理——FFT运算模块设计(3)
  9. linux内核增加emc拨号功能,[转载]EMC存储最佳实践(五)
  10. 樱桃文案:销售樱桃水果的文案,水果樱桃宣传文案