这两天在翻阅《JavaScript模式》的时候,看到一个标题,“避免使用eval()”,这不禁让我想探索一下,为什么要避免使用eval。

首先我们来先看一下eval()的定义:

执行一段字符串中的JavaScript代码。
摘要:
eval(code)
参数:
code
包含待求知的JavaScript表达式或待执行的JavaScript语句的字符串。
返回:
求值后的代码的值,如果存在对应的值的话。
异常:
如果code不是合法的JavaScript代码,则eval()将抛出一个SyntaxError。如果在对code求值的过程中发生了错误,则eavl()将传播这个错误。

也就是说,eavl()是一个用于执行一段JavaScript代码字符串的全局方法。如果code包含一个表达式,则会对表达式求值并返回这个值。
那大概能知道为什么避免使用eval()了。
1.它可以将任意一个字符串当作JavaScript代码来执行。
2.会存在一些安全隐患,因为这样做有可能执行被篡改过的代码(例如来自网络的代码)。

关于javascript中避免使用eval的理解相关推荐

  1. javascript中浅拷贝和深拷贝的理解

    javascript中浅拷贝和深拷贝的理解 什么是拷贝? 简单地说就是复制,对数据的复制 浅拷贝:改变拷贝者的值,被拷贝者的值也会变化 深拷贝:改变拷贝者的值,被拷贝者的值不会变化 由于基本数据类型是 ...

  2. JavaScript中call、apply个人理解

    JavaScript中call.apply个人理解 一句话即通俗的说:call.apply 是为了改变this的状态而存在的 var lisi = {name:'李四',age:23};var zs ...

  3. 12.在JavaScript中的事件模型如何理解?

    一.事件与事件流 javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性, 常见的有加载事件.鼠标事件.自定义事件等 由于DOM是一个树结构,如果在 ...

  4. 对javascript中的匿名函数的理解

    (function(){//这里的所有变量和函数都属于局部对象 }()); 在javascript中以function开头的语句通常是函数声明.加上了外面的括号(黄色背景)后则创建的是函数表达式. 蓝 ...

  5. JavaScript中加号运算符+ 运算过程理解

    在JavaScript中二元加法运算符"+"可以对两个数字或者字符串进行连接操作. 1+2=>3 "hello"+" "+" ...

  6. Vuejs和Javascript中的this变量的理解

    文章目录 1 javascript 1.1 全局环境下 1.2 对象中this 1.3 函数中this 1.4 箭头函数 1.5 例子和总结 1.5.1 例一全局对象 1.5.2 例二对象调用 1.5 ...

  7. javascript中重要概念-闭包-深入理解

    在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入.本人经过一段时间的学习,对闭包的概念又有了新的理解.于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给 ...

  8. JavaScript中发布/订阅模式的理解

    订阅发布模式的介绍 发布订阅模式,它定义了一种一对多的关系,可以使多个观察者对象对一个主题对象进行监听,当这个主题对象发生改变时,依赖的所有对象都会被通知到. 在生活中我们常常遇到这样一种情况,我们在 ...

  9. javascript中 __proto__与prorotype的理解

    我们先看看这样一段代码: 1 <script type="text/javascript"> 2 var Person = function () { }; 3 var ...

  10. javascript中ready和onload的理解

    首先,document.ready和window.onload都是原生js的,但是js并没有实现ready方法,需要自己实现,或者使用jQuery的文档就绪方法:而onload在没定义方法之前,也只是 ...

最新文章

  1. android 广告效果图,android 仿首页广告轮播效果
  2. JS重复引用也会导致错误
  3. 使用jQuery的9个误区
  4. 国产知名老牌 PDF 工具正式开源
  5. 关于python序列类型的通用操作符_Python—语法基础(3) 序列类型及操作
  6. 莫比乌斯带catia建模_独家教程 | 循环曲面“莫比乌斯”,康石石教你Rhino“3步”快速打造...
  7. Oracle SQL性能优化的40条军规
  8. 计算机组成基础(2)-- 微体系结构层
  9. java前端开发简历_web前端工程师简历
  10. 把握这两点,抢占下一个电商风口|2016最新中国电商App排名研究报告
  11. JAVA定义矩形类 方法二
  12. win7音量图标不见了怎么办捏
  13. 软件工程之软件开发和软件测试模型
  14. 微信小程序----对接OneNet平台(测试版)
  15. 数据分析报告的 6 个步骤
  16. POJ 1265 Area(Pick定理)
  17. armbian打印服务器恩山无线,刷了armbian后用cups共享打印非常爽
  18. 无法访问计算机请检查名称的拼写,win10系统访问共享文件夹提示“请检查名称的拼写”的修复方案...
  19. java提示系统找不到指定路径怎么解决?
  20. Pytorch的model.train() model.eval() torch.no_grad() 为什么测试的时候不调用loss.backward()计算梯度还要关闭梯度

热门文章

  1. win7为什么安装不了python_【如何在win7下安装Python及配置】电脑无法安装python
  2. 2020.8.25丨微生物基因组重测序流程梳理
  3. VIRTIO-BLK设备SERIAL ID
  4. 计量单位报错:消息号BM305 “未使用语言 ZH 创建单位 XXX”
  5. 【codecademy笔记1】
  6. mysql按时间查询的优化_Mysql根据时间查询日期的优化技巧
  7. mysql字符集校对_MySQL字符集与校对
  8. repo报错:SyntaxError: invalid syntax
  9. 惠普打印机爆远程命令执行漏洞,黑客可任意操纵你的打印机
  10. 改进YOLOv5!GSConv+Slim Neck进一步提升YOLOv5性能!