eval函数

“魔鬼”函数?

如果你现在的代码中使用了eval(),记住该咒语“eval()是魔鬼”。此方法接受任意的字符串,并当作JavaScript代码来处理。当有问题的代码是事先知道的(不是运行时确定的),没有理由使用eval()。eval 用的好不好 其实和使用者的水平有关系

作用域

在eval()中创建的任何变量或函数都不会被提升,因为在解析代码的时候,它们被包含在一个字符串中;它们只在eval()执行的时候创建

为什么不提倡使用eval函数?

  1. 可读性非常差
  2. 不好再做优化和编译
  3. 会轻微增加性能消耗
  4. 不安全,比如 eval input 的值

直接引用 or 间接引用

var a = 1;
(function(){var a = 2;eval("console.log(a)");//输出为2(0, eval)("console.log(a)");//输出是1
})()

间接引用eval,语句会被优化至全局作用域
详见stackoverflow

一些奇妙的用途

var arr = [1,2,3,4,5]
function sum(arr) {return eval(arr.join('+'));
}
//输出15
for (var loop = 1; loop < 10; loop++) {eval('document.getElementById("div"+loop).innerHTML="123"');
}

但很多时候,我们仍能找到其他更高效的的方法替代eval

var obj={name:'lxl',age:20
}//eval
var property = "name";
alert(eval("obj." + property));// 更好的
var property = "name";
alert(obj[property]);   //es6解构赋值

再探JS---eval函数相关推荐

  1. js eval()函数

    JS eval()函数   转自:http://www.86822.com/code/zw.asp?id=614 eval()函数        JavaScript有许多小窍门来使编程更加容易.   ...

  2. js html字符串转对象,js eval函数使用,js对象和字符串互转.

    js eval函数使用,js对象和字符串互转. JavaScript eval() 函数  JavaScript 全局函数 定义和用法 eval() 函数计算 JavaScript 字符串,并把它作为 ...

  3. JSONObject JSONArray各种用法以及js eval()函数与JSON.parse的区

    2019独角兽企业重金招聘Python工程师标准>>> 一.在后台使用JSONObject对象,并将从数据库中取出来的数据直接使用 JSONObject的put方法放进去,再将这个J ...

  4. JS eval函数作用

    首先来个最简单的理解             eval可以将字符串生成语句执行,和SQL的exec()类似. eval的使用场合是什么呢?有时候我们预先不知道要执行什么语句,只有当条件和参数给时才知道 ...

  5. C++ 重载函数调用运算符 | 再探lambda,函数对象,可调用对象

    文章目录 重载函数调用运算符 lambda lambda等价于函数对象 lambda等价于类 标准库函数对象 可调用对象与function 可调用对象 function 函数重载与function 重 ...

  6. 【Vue.js 牛刀小试】:第九章 - 组件基础再探(data、props)

    系列目录地址 一.基础知识概览 第一章 - 一些基础概念(posted at 2018-10-31) 第二章 - 常见的指令的使用(posted at 2018-11-01) 第三章 - 事件修饰符的 ...

  7. js的eval函数解析后台返回的json数据时为什加上圆括号eval((+data+)),而HTML页面定义的数据不用...

    一,情况如下,这是成功代码: $(function () {$.ajax({url: "Demo.aspx",type: "post",data: { Id: ...

  8. c++ _int64转字符串_C语言 仿JS的eval函数 解析字符串

    C语言 利用后缀表达式解析字符串(符合c98标准,很容易移植到计算器上) 最近用98标准的C语言写了个解析字符串,类似于JavaScript中的eval函数,感觉挺实用(移植到了计算器上,可以画F(X ...

  9. C#中实现js中的eval函数功能

    在js中有eval函数,比如 eval('3+3*4')结果为15: 但C#中想要完成这样的功能,却没有相应的函数,可以用sql语句的方式实现,比如,执行 select 3+3*4 的方式. 可以先构 ...

  10. C++ 类的知识 | 构造函数再探、匿名对象、友元函数、内部类、类的const成员、类的static成员

    文章目录 构造函数再探 以下代码共调用多少次拷贝构造函数 委托构造函数 概念 形式 匿名对象 友元 友元的声明 友元类 令成员函数作为友元 函数重载和友元 注意 内部类 特性 类的const成员 可变 ...

最新文章

  1. Redis 的持久化方案
  2. Trilogy公司的笔试题:根据指定规则用最少的步骤将数转为1
  3. matlab 双音多频 接收端检测到的号码,信号语音论文,关于基于MATLAB的双音多频信号识别相关参考文献资料-免费论文范文...
  4. 第二个情人节表白网页源码
  5. 如何批量删除Excel工作簿中vba代码
  6. Linux编译websocketpp解决方案
  7. cad中tk什么意思_cad绘图tk命令技巧
  8. 宇视摄像头IP地址修改工具
  9. 聚类分析原理及R语言实现过程
  10. Tomcat 漏洞修复建议
  11. 基于FPGA的乒乓ram控制系统设计
  12. 红黑树——简单明了的学生思路
  13. 近期java面试总结
  14. iOS - 一份参考简历,请注意查收!
  15. uniapp 小程序用高德地图sdk
  16. 愿家乡的教育走出一片新天地!
  17. java程序日志管理
  18. 续流二极管的作用及选型
  19. AI测温人脸门禁防疫布控解决方案:为构建城市防疫战线提供有力支持 | 百万人学AI评选
  20. Python Spider: 爬取项目外包网站TaskCity

热门文章

  1. 基于 ANSIBLE 自动化运维实践
  2. 机器学习篇-船长总结(hsrjdz01)
  3. android主线程和子线程的区别
  4. html的空格代码怎么写?教你如何使用空格nbsp代码(收藏)
  5. ipad协议8.34最新版本
  6. CodeUp-1036 Problem B 镂空三角形
  7. 卸载 AutoCAD 清理注册表
  8. 怎么修改PDF文件的文字内容
  9. mac_m4a转mp3
  10. 超全万字汇总!科研论文绘图实操干货!11类Matplotlib图表,含代码