当前位置: 首页 > 面试题库 >

为什么eval要添加括号呢?

丁灿
2023-03-14
本文向大家介绍为什么eval要添加括号呢?相关面试题,主要包含被问及为什么eval要添加括号呢?时的应答技巧和注意事项,需要的朋友参考一下

没太理解题意,方法的调用是要加括号的啊……

如果题目问的是为什么会有

(0, eval)('this')

这种调用形式的话,那是因为js规定eval在间接调用(无调用者上下文)时,其编译的代码会默认执行在顶层作用域。

例:

let foo = 1;

(function() {
  let foo = 2;

  console.log(eval('foo'));       // 2
  console.log((0, eval)('foo'));  // 1

  (0, eval)('foo = 3');

  console.log(foo);  // 2
})();

console.log(foo);    // 3

所以(0, eval)('this')永远只会返回全局对象(该表达式可以作为globalThis的polyfill,并且无法被污染)

 类似资料:
  • 问题内容: 我已经知道(困难的方式)需要在JSON数据周围添加括号,如下所示: (至少在Firefox 3中)。 这是什么原因呢?我讨厌写代码而又不了解幕后花絮。 问题答案: 放在括号内实际上等效于 如果要在没有括号的情况下进行评估,则将对代码进行评估,并且如果其中确实有任何命名函数,则将对其进行定义,但不会返回。 举例来说,可以像创建函数一样调用函数: 将调用刚刚定义的函数。但是,以下内容不起作

  • eval 函数会在当前作用域中执行一段 JavaScript 代码字符串。 var foo = 1; function test() { var foo = 2; eval('foo = 3'); return foo; } test(); // 3 foo; // 1 但是 eval 只在被直接调用并且调用函数就是 eval 本身时,才在当前作用域中执行。 var fo

  • 本文向大家介绍python 为什么说eval要慎用,包括了python 为什么说eval要慎用的使用技巧和注意事项,需要的朋友参考一下 eval前言 当内存中的内置模块含有os的话,eval同样可以做到命令执行: 当然,eval只能执行Python的表达式类型的代码,不能直接用它进行import操作,但exec可以。如果非要使用eval进行import,则使用__import__: 在实际的代码中

  • 问题内容: 您能否告诉我这种特定语法结构的原因 解析json文本时。克罗克福德说:“ 文本必须用括号括起来,以避免绊倒JavaScript语法 。” 在这里。那是什么意思? 我们可以避免吗? 问题答案: Crockford所指的语法含糊之处在于,如果在 表达式 上下文中未找到一个开放的花括号,则该花括号将被识别为一个块,而不是一个对象文字的开头。 例如: 会给您一个语法错误,因为它将被解释为一个块

  • 问题内容: 我已经在多个地方多次看到过这种情况,但是从未找到令人满意的解释来说明为什么会这样。 因此,希望这里会介绍一个。为什么我们(至少通常)不使用和? 编辑:我看到人们以为这个问题与Web服务器有关,但事实并非如此。我可以理解为什么传递给未经处理的字符串可能很糟糕。在非Web应用程序中不好吗? 问题答案: 通常有更清晰,更直接的方法来获得相同的效果。如果构建复杂的字符串并将其传递给,则代码将难

  • 问题内容: 从(脚本)的编程语言来了,我不明白为什么这 不 工作 同时添加其他括号 确实 有效(至少在Postgres中有效)。 我本来以为在两种情况下都可以访问返回的数组,但是我想这里缺少我对SQL的语法理解。 那么为什么需要括号呢? 问题答案: 方括号具有很高的优先级,因此您的查询被解析为 这没有任何意义,您希望将索引应用于call的结果,因此您必须添加括号以对regexp_matches调用