为什么 let 关键字不能与 eval() 一起使用 [重复]

2024-04-13

function foo(str, a) {
  eval( str );
  console.log( a, b );
}

foo( "var b = 3;", 1 ); 

这工作得很好,但是当我们使用 let 而不是 var 时,它就不起作用了。为什么?


Because eval引入了一个新的代码块。声明使用var将在该代码块之外声明一个变量,因为var在函数作用域中声明一个变量。

let另一方面,在块作用域中声明变量。所以,你的b变量仅在您的eval堵塞。它在您的函数范围内不可见。

更多关于 var 和 let 之间的区别 https://stackoverflow.com/questions/762011/whats-the-difference-between-using-let-and-var-to-declare-a-variable-in-jav

EDIT: 更准确的说eval + let事实上,创建一个词汇环境 https://www.ecma-international.org/ecma-262/6.0/#sec-lexical-environments。请参阅@RobG 的回复使用 eval() 定义 const 变量 https://stackoverflow.com/questions/43188732/define-const-variable-using-eval

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 let 关键字不能与 eval() 一起使用 [重复] 的相关文章

  • 使用 fb.ui 时如何检测用户取消共享

    我正在使用提供的文档here https developers facebook com docs sharing reference share dialog使用以下代码 共享对话框正确显示 问题是我无法区分用户在对话框中执行的 取消 和
  • 为什么我会收到此 Javascript 错误“连接未定义”?

    我不确定为什么会收到此错误 connection is not defined document getElementById flashTest sendValFromHtml connection value 这是我的代码 functi
  • 如何避免多系列折线图d3.js的工具提示重叠

    我已经在多系列折线图上创建了工具提示 如下所示在这里回答 https stackoverflow com questions 34886070 d3 js multiseries line chart with mouseover tool
  • Safari 不触发表单提交

    对于一个项目 我有两个选择表单字段 它们通过 jquery 触发器 提交 发送 这在 Firefox 和 Chrome 中运行良好 但在 Safari 中没有任何反应 这是 HTML 代码
  • JQuery UI Draggable - 如何知道元素是否可拖动初始化?

    我的逻辑是 if this draginited a drag disabled element shouldn t get pass here as it is inited this draggable 我搜索了很多 找不到实现这个逻辑
  • 计算div中有多少个元素

    我有一个div 里面有span 有没有一种方法可以计算 div 中有多少个元素 然后将其作为值给出 例如 一个 div 中有 5 个跨度 那么它会对其进行计数并发出警报 5 请使用 JavaScript 谢谢 如果你想要后代的数量 你可以使
  • 图表js不显示

    我正在尝试使用 Charts js 创建一个简单的折线图 当我运行下面的代码时 没有出现图表 我究竟做错了什么 我正在关注这个教程http www chartjs org docs latest getting started http w
  • 使用 lambda 更新 amazon s3 对象元数据而不执行对象复制?

    是否可以使用 lambda 函数添 加或更新 s3 对象元数据而不复制对象 这篇 2 年前的帖子说我们确实需要复制一份 https stackoverflow com questions 32646646 how do i update m
  • 如何在 Ionic 2 中动态创建具有特定类的模式?

    嗨 我已经被一个问题困扰好几天了 到目前为止还没有研究证明足够 我正在尝试在 Ionic 2 中创建一个具有特定类 或 id 的简单模式 我需要这样简单的东西
  • 检测 JavaScript 版本

    如何检测浏览器支持的 JavaScript 版本 如果有 我想检查 ECMAScript 3 ECMAScript 5 和 ECMAScript 6 注意 我想避免已弃用的language tag 这里有一个很好的参考给你 http www
  • 在 angularJS 中覆盖模块值/常量的最佳方法

    我用 angularJS 编写了一个模块 封装了所有后端通信 为了获得更大的灵活性 我将 api 前缀作为模块上的常量值 可能是值 因为我没有在配置阶段使用它 所以像 angular module myapp data constant a
  • 为什么 Bootstrap 需要 jQuery? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经多次用谷歌搜索这个问题 但从未找到满意的答案 大多数答案似乎只是说 是的 Bootstrap 插件确实需要 jQuery https st
  • React-Router v5 History.push 不触发组件

    很抱歉朋友们又问这个问题了 我找到了解决这个问题的几个方法 但他们让我很困惑 我只是想问一个优雅的方法来做到这一点 正如你通过标题所理解的 我有一个关于反应路由的问题 让我解释 我有一个按钮 其名称是Login 单击按钮后 我执行了一些逻辑
  • c3js数据标签的位置

    有没有可能的方法来更改数据上方标签的位置c3条形图 在官方文档中 很好地解释了如何通过操作 y 和 x 整数来更改 x 和 y 测量轴上标签的位置 但我没有找到任何数据标签 我试图用简单的方式指出它d3其上c3是基于但是console lo
  • 添加元数据到快速路线

    有什么方法可以将元数据添加到 Express 的路线中吗 例如 app get some route function req res some meta data 我正在寻找一种针对我的节点应用程序的 AOP 方法 因此我想通过身份验证和
  • IE 开发工具断点不起作用

    我正在尝试在 IE 11 中调试一些 javascript 但无法强制它在断点处停止 debugger 行工作正常 停止该行中的调试器 相同的文件没有debugger 行但在同一位置设置断点不会执行任何操作 功能正常 但调试器不会在断点处停
  • 通过排列四个给定数字找到最大可能时间 HH:MM

    我最近为了工作晋升而参加了编码测试 这是我真正遇到的任务之一 我想知道什么是最好的方法来做到这一点 我使用了大量的 if 和 if else 这不是最干净的解决方案 但完成了工作 我被问到的问题是 将 4 个数字格式化为 24 小时时间 0
  • 以特定顺序运行具有效果的 jQuery 函数

    我在 javascript 函数中有一些 jQuery 可以更改页面上的文本并以特定的时间间隔淡入和淡出 我希望这些函数在每个函数完成其效果后按顺序运行 dialogueExchange1 dialogueExchange2 dialogu
  • 使用 Google Visualization,为什么 DataView 内容显示在 ChartRangeFilter 中,而不显示在其关联的 LineChart 中?

    下面的代码应该从 CSV 文件填充 DataView 然后 DataView 被输入到 DashBoard 其中包含绑定在一起的 LineChart 和 ChartRangeFilter 我的问题是 虽然 ChartRangeFilter
  • 使用 document.getElementsByName() 不起作用?

    第二个警报命令的代码按预期工作 显示元素 to 的值 但第一个警报命令不起作用 它应该做同样的事情 这是为什么

随机推荐

  • WiX 在构建服务器上失败

    我有一个使用 WiX 的项目 它在我的本地计算机上运行良好 但是当我发布到构建服务器时 构建会因以下内容而崩溃 来自 MSBuild 日志 Using HeatDirectory task from assembly C Program F
  • 为什么标准没有提供擦除删除惯用语的便利帮助程序?

    从 STL 中的集合中删除项目需要一种经常使用的技术 该技术已成为一种习惯用法 擦除 删除 惯用语 https en wikipedia org wiki Erase E2 80 93remove idiom 这个习语最常见的用法之一是删除
  • 如何找出当前页面上的光标位置?

    我向页面添加了一堆内容 例如document add p 然后我使用文档添加一个填充两列的表格here http itextpdf com examples iia php id 91 在这个过程中 我使用 column setSimple
  • retrbinary 期间线程化“NOOP”命令

    我编写了一个 FTP 脚本 遗憾的是该脚本必须处理位于防火墙后面的服务器 ISP 也会很早就切断我的控制连接 无论我在防火墙的任一侧设置什么样的超时设置 我最终做出了两个选择 1 在 retrbinary 命令中分叉代码 以便下载完成时每
  • Python 中的标量场可视化

    我需要在 Python 中可视化几个重叠的标量场 我发现mayavi图书馆做这种情节 问题是我不明白如何为标量字段自定义颜色图 我的想法是为每个字段设置一种颜色的阴影 我尝试采用一个例子 http docs enthought com ma
  • 比较列表推导式和显式循环(3 个数组生成器比 1 个 for 循环快)

    我做了作业 无意中发现算法的速度出现了奇怪的不一致 这是相同函数的代码的 2 个版本 但有 1 个区别 在第一个版本中 我使用 3 次数组生成器来过滤某些数组 在第二个版本中 我使用 1 个 for 循环和 3 个 if 语句来执行相同的过
  • 如何在 scipy 层次聚类中获取非单例簇 ID

    根据this http docs scipy org doc scipy reference generated scipy cluster hierarchy dendrogram html scipy cluster hierarchy
  • 如何使用 Laravel 上传视频

    我正在尝试在使用 Laravel 时上传视频 虽然当我更改控制器线路时上传图像对我来说效果很好 echo file file gt getClientOriginalName gt to echo
  • 如何从 JQuery 调用控制器方法?

    我有用于 asp net 非 Mvc 的 ajax 代码来调用 webMethod 以从服务器获取请求的附加数据 但我似乎无法找出在 MVC 中提供 JQuery 的 url
  • join()在线程中有什么用?

    我正在研究 python 线程并遇到join http docs python org 2 library threading html threading Thread join 作者告诉我 如果线程处于守护进程模式 那么我需要使用joi
  • 跟随画布光标的放大镜

    我正在为我的客户设计 T 恤 我使用 html5 canvas 制作了它 衬衫设计师现在已经完成了 但他要求我添加一个放大镜 如下所示 http mlens musings it http mlens musings it 我发现了很多类似
  • 如何在打包并部署为 WAR 的 Springboot 应用程序中启用异步支持

    当我的 SpringBoot 应用程序从可执行 JAR 运行时 下面显示的 REST 端点按预期工作 也就是说 它将文本 我的测试响应 返回给客户端 但是 当我将相同的应用程序打包为 WAR 并部署到 Tomcat 8 0 29 时 它会抛
  • 找不到模块“styled-components/native”的声明文件

    如果你添加styled components对于您的 React Native 项目 有一个专门用于本机组件的子目录 import styled from styled components native export const Cont
  • Coffee HAML 中的部分内容 (.hamlc)

    我在 Rails 后端使用backbone js哈姆咖啡 https github com netzpirat haml coffee 它是由haml 咖啡 资产 https github com netzpirat haml coffee
  • Java Map Value Comparator,插入时排序

    我想使用值比较器将项目插入 HashMap TreeMap 或 SortedMap 您可能会建议一些其他 api 我读过很多帖子 包括这个one https stackoverflow com questions 109383 how to
  • ASP.NET MVC 将 JSON 从控制器传递到视图

    想知道从 API JSON 格式 提取数据的最佳方法是什么 我的控制器中有代码 它调用返回数据的 API 我想将数据获取到我的视图中 以便我可以将其显示在页面上 我已经看到使用 jQuery AJAX 的记录最多的方法 但我真的不希望 AP
  • 如果使用 jQuery UI 拖动,外部旋转 div 内的内部 div 不会跟随鼠标

    我在外部 div 内有一个内部 div 内部div可拖动 外部div可旋转40度 这是一个测试用例 在实际情况下 它可以是任何角度 还有另一个名为 point 的 div 其位置如图所示 我来自 flash 背景 在 Flash 中 如果我
  • C# 通过引用传递值类型数组的元素

    我想通过引用传递数组的元素 数组包含值类型元素 而不是引用类型 这可能吗 谢谢 是的 这绝对是可能的 与通过引用传递任何其他变量的方式完全相同 using System class Test static void Main string
  • 我应该如何在 mysql_query 函数中编写 PHP $_POST 变量?

    在访问我的数据库时 我让用户填写一个表单 然后在目标页面中 发布的值将用于生成的 MySQL 查询中 query mysql query SELECT pass FROM database WHERE user POST user 然而 由
  • 为什么 let 关键字不能与 eval() 一起使用 [重复]

    这个问题在这里已经有答案了 function foo str a eval str console log a b foo var b 3 1 这工作得很好 但是当我们使用 let 而不是 var 时 它就不起作用了 为什么 Because