在 Node.js ES6 中使用 eval 创建变量失败

数据

似乎不可能eval在 Node.js ES6 中使用创建变量,但我不明白为什么。这在 CentOS 7 上发生在我身上,但我不认为操作系统是这里的问题。

常规 Node.js 文件(test.js):

eval("var a=1");
console.log(a);

使用 .mjs 扩展名制作相同的文件以与 Node.js ES6 (test.mjs) 一起运行:

eval("var a=1");
console.log(a);

之后,使用 Node.js 和 Node.js ES6 运行 2 个文件:

$ node test.js
1

$ node --experimental-modules test.mjs
(node:9966) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: a is not defined
    at file:///temp/test.mjs:2:13
    at ModuleJob.run (internal/modules/esm/module_job.js:96:12)

它是与 ES6 相关的问题吗?我在浏览器的控制台上试过,问题是一样的:

>> eval("var a=1"); console.log(a);
   1

>> class c { static f(){ eval("var a=1"); console.log(a); } }
   c.f()
   ReferenceError: a is not defined

我正在使用 Node.js 10.9.0,这是一个错误还是背后有原因?

jfriend00

在严格模式下,在eval()语句内创建的变量仅可用于该代码。它不会在您的本地范围内创建新变量(这是一篇关于该主题好文章),而在非严格模式下,它可以在本地范围内创建变量。

并且,默认情况下,mjs 模块以严格模式运行。默认情况下,常规 node.js 脚本文件不处于严格模式。因此,严格模式设置的差异导致eval().

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js导入ES6库失败

来自分类Dev

在node.js中使用ES6 Promise返回空响应

来自分类Dev

如何使用Node JS设置Babel 6以在服务器端代码中使用ES6?

来自分类Dev

在Scala JS中使用js.eval()函数中的变量

来自分类Dev

模块解析失败:es6 在 .JS 文件中使用 JSX 响应组件

来自分类Dev

在Expressjs,Node中使用ES6功能

来自分类Dev

在Expressjs,Node中使用ES6功能

来自分类Dev

在js文件中使用node变量

来自分类Dev

继承的类不能使用在node.js ES6样式类的基类中定义的变量?

来自分类Dev

使用VSCode调试Node.js ES6代码

来自分类Dev

使用 express 和 ES6 类在 node js rest api 中查找路由的问题

来自分类Dev

在Node.JS中使用ECMAScript 6

来自分类Dev

使用ES6语法在Node 5.9中进行变量交换的正确方法是什么?

来自分类Dev

在node.js mysql-node查询中使用变量

来自分类Dev

无法在Node.js ES6字符串的URL中加载动态变量值

来自分类Dev

Node.js无法导入ES6模块

来自分类Dev

Node.js导出的行为与ES6模块不同

来自分类Dev

在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

来自分类Dev

如何在Jade中创建要在node.js中使用的变量

来自分类Dev

使用es6创建原型

来自分类Dev

node.js在导入中使用局部变量

来自分类Dev

在`Node.js`中使用`require`传递对象和变量

来自分类Dev

在 node.js 中使用 cognito 用户池创建用户

来自分类Dev

未使用Node + ES6 + Babel定义的类方法

来自分类Dev

Node.js-将ES6模块导入Node.js``需要''

来自分类Dev

在HTML文件的脚本JS标签中使用ES6依赖项

来自分类Dev

在 React 中使用 JS ES6 承诺的问题 - TypeError:无法读取未定义的属性“then”

来自分类Dev

使用与ES6 / 7中的变量名称相同的键从变量创建对象

来自分类Dev

转换Singleton JS对象以使用ES6类

Related 相关文章

  1. 1

    Node.js导入ES6库失败

  2. 2

    在node.js中使用ES6 Promise返回空响应

  3. 3

    如何使用Node JS设置Babel 6以在服务器端代码中使用ES6?

  4. 4

    在Scala JS中使用js.eval()函数中的变量

  5. 5

    模块解析失败:es6 在 .JS 文件中使用 JSX 响应组件

  6. 6

    在Expressjs,Node中使用ES6功能

  7. 7

    在Expressjs,Node中使用ES6功能

  8. 8

    在js文件中使用node变量

  9. 9

    继承的类不能使用在node.js ES6样式类的基类中定义的变量?

  10. 10

    使用VSCode调试Node.js ES6代码

  11. 11

    使用 express 和 ES6 类在 node js rest api 中查找路由的问题

  12. 12

    在Node.JS中使用ECMAScript 6

  13. 13

    使用ES6语法在Node 5.9中进行变量交换的正确方法是什么?

  14. 14

    在node.js mysql-node查询中使用变量

  15. 15

    无法在Node.js ES6字符串的URL中加载动态变量值

  16. 16

    Node.js无法导入ES6模块

  17. 17

    Node.js导出的行为与ES6模块不同

  18. 18

    在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

  19. 19

    如何在Jade中创建要在node.js中使用的变量

  20. 20

    使用es6创建原型

  21. 21

    node.js在导入中使用局部变量

  22. 22

    在`Node.js`中使用`require`传递对象和变量

  23. 23

    在 node.js 中使用 cognito 用户池创建用户

  24. 24

    未使用Node + ES6 + Babel定义的类方法

  25. 25

    Node.js-将ES6模块导入Node.js``需要''

  26. 26

    在HTML文件的脚本JS标签中使用ES6依赖项

  27. 27

    在 React 中使用 JS ES6 承诺的问题 - TypeError:无法读取未定义的属性“then”

  28. 28

    使用与ES6 / 7中的变量名称相同的键从变量创建对象

  29. 29

    转换Singleton JS对象以使用ES6类

热门标签

归档