eval和new Function构造函数时的区别

embedded/2024/9/23 7:26:12/

eval

eval(codeString)用来执行代码字符串codeString,并且返回最后一个表达式(注意不是声明语句)的值。这里需要注意的是返回的值是表达式的值,比如 'const a =1'和 'a = 1',第一个执行eval返回undefined,第二个返回1,

对于定义函数来说,如果想用eval动态构造函数,那么有两种方式:1.使用箭头函数表达式构造函数,2.使用()将函数function声明语句包裹起来,

var res = eval('a = 1') // 
res // 1var res = eval('const a = 1') // 
res // undefinedvar res = eval(`(data)=>{console.log(data,111)}`)
res // 是函数var res = eval(`(function(data){console.log(data,111)})`)

new Function

格式:new Function(形参1,形参2,...,函数体)

const fn = new Function('x','y','return x+y')

推荐使用new Function动态构造函数,安全性比eval要高.

共同点:二者构造的函数的作用域都是全局的,可以通过bind,call,apply来修改this的指向


http://www.ppmy.cn/embedded/58251.html

相关文章

213.贪心算法:跳跃游戏||(力扣)

class Solution { public:int jump(vector<int>& nums) {if (nums.size() 1) return 0; // 如果数组长度为1&#xff0c;已经在终点&#xff0c;不需要跳跃int cur 0; // 当前跳跃能到达的最远位置int flag 0; // 记录跳跃次数int next 0; // 下一次跳跃能到…

python基础语法笔记(有C语言基础之后)

input()用于输入&#xff0c;其有返回值&#xff08;即用户输入的值&#xff09;&#xff0c;默认返回字符串。括号里可放提示语句 一行代码若想分为多行来写&#xff0c;需要在每一行的末尾加上“\” 单个“/”表示数学中的除法&#xff0c;不会取整。“//”才会向下取整。 …

STM32智能家居安防系统教程

目录 引言环境准备智能家居安防系统基础代码实现&#xff1a;实现智能家居安防系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 控制系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;安防管理与优化问题解决方案与优化收尾与总结 1. 引言 智能家居安防系统利用STM32嵌…

MySQL之binlog日志

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/697078870 目录&#xff1a; binlog 是什么binlog 配置和查看binlog 的类型binlog 如何恢复数据binlog 是逻辑日志还是物理日志binlog 作用 注意&#xff1a;以下所有的操作都在 MySQL 8.0 版本实现。 1、binlog 是什么 …

Clojure学习:运行在 Java 虚拟机(JVM)上的动态Lisp编程语言

因为HY的学习资料较少&#xff0c;所以通过学习Clojure来辅助学习HY。前期也看过一些Common Lisp和On Lisp的文档&#xff0c;现在还不太清楚HY跟谁最接近。 文档&#xff1a;Clojure - Getting Started 在FreeBSD下安装Clojure 在FreeBSD系统&#xff0c;可以直接使用pkg进…

(七)[重制]C++命名空间与标准模板库(STL)

​ 引言 在专栏C教程的第六篇C中的结构体与联合体中&#xff0c;介绍了C中的结构体和联合体&#xff0c;包括它们的定义、初始化、内存布局和对齐&#xff0c;以及作为函数参数和返回值的应用。在专栏C教程的第七篇中&#xff0c;我们将深入了解C中的命名空间&#xff08;nam…

第三章 设计模式(2023版本IDEA)

学习目标 3.1 设计模式概述3.2 软件可复用问题和面向对象设计原则一、软件可复用问题二、面向对象设计原则1. 单一责任原则&#xff08;Single Responsibility Principle, SRP&#xff09;2. 开放-封闭原则&#xff08;Open-Closed Principle, OCP&#xff09;3. 里氏替换原则&…

Prompt Engineering overview

文章目录 High level look迭代法优化iterate参考 High level look 提示的重要性往往会被低估或者高估 低估是因为正确的提示技术如果使用得当&#xff0c;可以让我们走的更远。 高估是因为基于提示的应用程序&#xff0c;需要围绕提示进行大量的工程设计才能运行良好。 提示工…