js中的eval()和catch()
定义和用法
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法
eval(string)
参数 | 描述 |
---|---|
string | 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 |
返回值
通过计算 string 得到的值(如果有的话)。
说明
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
抛出
如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。
如果非法调用 eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。
提示和注释
提示:虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多。
实例
例子 1
在本例中,我们将在几个字符串上运用 eval(),并看看返回的结果:
<script type="text/javascript"> eval("x=10;y=20;document.write(x*y)") document.write(eval("2+2")) var x=10
document.write(eval(x+17)) </script>
输出:
200
4
27
例子 2
看一下在其他情况中,eval() 返回的结果:
eval("2+3") // 返回 5
var myeval = eval; // 可能会抛出 EvalError 异常
myeval("2+3"); // 可能会抛出 EvalError 异常
可以使用下面这段代码来检测 eval() 的参数是否合法:
try {
alert("Result:" + eval(prompt("Enter an expression:","")));
} catch(exception) {
alert(exception);
} 关于catch:
try {
return a/b;
}
catch (Exception e) {
//当b为0的时候这里可以打印提示:除数不能为0
}
异常的通俗原理在于,当出现某些错误的时候,你又不想直接把程序直接关闭,那么就在你捕捉到的异常里进行处理,这样程序可以继续运行,而不是马上关闭.
上面你返回a/b,正常情况下b不是0,那么就直接返回,不会执行catch里的东西,但是当你的b是0,就无法返回数据,那么异常了,异常然后被catch捕捉到,就执行catch里的语句,然后继续运行下面的代码.
js中的eval()和catch()的更多相关文章
- 浅入浅出JS中的eval及json
声明: 首先声明一下,本人是JS新手,所以不敢说深入,只是把最近对eval的学习经验拿出来跟大家分享,如果您是高手可略去不看. 适合读者: 对JS中的eval一知半解,不知eval是如何把字符串转换为 ...
- js中的eval方法转换对象时,为何一定要加上括号?
待转换的是一个Json字符串: {'name':'新欢'} 而使用如下这种方式调用则会抛出语法异常, eval("{'name':'新欢'}"); 必须加上括号才行 eval(&q ...
- JS中的eval函数
最近开始慢慢学习前端的脚本了,上次碰到了一个问题,需要通过一个对象的属性名称来获得这个对象这个属性的值.如果在C#中,那么直接通过反射就可以了.而在js中,也有类似的函数,那就是eval ...
- js中的eval方法
eval(string) eval函数接收一个参数string,如果string不是字符串,则直接返回string.否则执行string语句.如果string语句执行结果是一个值,则返回此值,否则返回 ...
- js中的异常处理try...catch使用介绍
在JavaScript可以使用try...catch来进行异常处理. 例如: try { foo.bar();} catch (e) { alert(e.name + ": " + ...
- js中的eval函数另一种实现
js中有一个函数eval可以一段文本改为js代码,本来使用eval也可以达到目的,但自己看了不少资料都不推荐使用eval函数,于是自己就在思考有没有不使用eval的方法? 其实需求很简单,就是把一个 ...
- JS中注入eval, Function等系统函数截获动态代码
正文 现在很多网站都上了各种前端反爬手段,无论手段如何,最重要的是要把包含反爬手段的前端javascript代码加密隐藏起来,然后在运行时实时解密动态执行. 动态执行js代码无非两种方法,即eval和 ...
- JS中try catch的用法
在js中也可以使用try/catch语法,把可能发生异常的代码使用try包裹起来,然后在catch中对异常进行处理,处理后就不会影响后面代码的执行. const a = null try { cons ...
- mvc的自带json序列化的datetime在js中的解析
默认仅序列化后的日期格式是这样的:'/Date(124565787989)/'(数字随便敲的,数字表示相对于1970年的总毫秒数) 在js中借助eval函数,eval函数的意义:将参数中的字符串当作j ...
随机推荐
- DropDownList的使用,RadioButtonList的使用
DropDownList的使用之从后台动态获取值 前端aspx代码如下 <asp:DropDownList ID="DDLTypeID" runat="server ...
- 《CSS3秘籍》(第三版)-读书笔记(2)
第6章 文本格式化 1. 使用字体 字体font-family: 通用的字体样式: serif字体最适用于冗长的文字信息.这种字体使字母主笔画的结尾处会有一些细小的“足”. sans-serif字体 ...
- php字符串赋值到js的坑
很早以前的一个比较坑的问题,今天又遇到了,记录一下,免得以后再次入坑. 把php赋值到view层时,如果不是直接渲染到页面,而是赋值给变量.字符如果有回车或者换行就会出现问题. 示例: <?ph ...
- js判断访问终端
//判断访问终端 var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; ...
- 如何制作u盘启动盘
1,下载windows系统 许多人下载windows时会出现各种版本,我推荐在这里下载 你用上面的地址进行下载,一般用迅雷吧.下载结束你就有了镜像文件了. 2,下载安装碟软通 那 ...
- Unresolved external 'LresultFromObject'
[ILINK32 Error] Error: Unresolved external 'LresultFromObject' referenced from D:\PROGRAM FILES\EMBA ...
- 无需部署的轻量级数据库—SQLLite,使用Demo
当有程序需要保存轻量数据,而又烦躁序列化到本地的不便,轻量级数据库—SQLLite是一个很好的选择,只需引用System.Data.SQLite.DLL,无需部署数据库,便可像拥有数据库一样保存数据, ...
- [Leetcode][JAVA] Word Ladder II
Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...
- Nmcli 网络管理命令行工具基础
介绍 在本教程中,我们会在CentOS / RHEL 7中讨论网络管理命令行工具NetworkManager command line tool,也叫nmcli.那些使用ifconfig的用户应该在C ...
- kafka go producer 启动基本配置
1.官网上下载kafka安装包:http://kafka.apache.org/downloads.html 2.执行命令运行zookeeper 实例(单点): bin/zookeeper-serve ...