这个Javascript做什么`带有({return(";&x2B;text&&x2B;)}的新函数(";,";at";,";)`

这个Javascript做什么`带有({return(";&x2B;text&&x2B;)}的新函数(";,";at";,";)`,javascript,Javascript,这条线在做什么: var tfun = new Function("_", "at" , "with(_) {return (" + text + ");}" ); 什么是\u,在和与() 我读过: 我知道它正在创建一个新的函数对象,但我仍然对his应该做什么感到困惑 忘记输入源代码: 首先是函数参数,然后是代码,因此基本上与以下内容相同: var tfun = function(_, at) { with(_) { return (eval(text)); }; } 因此,文本

这条线在做什么:

  var tfun = new Function("_", "at" , "with(_) {return (" + text + ");}" );
什么是
\u
与()

我读过:

我知道它正在创建一个新的函数对象,但我仍然对his应该做什么感到困惑

忘记输入源代码:


首先是函数参数,然后是代码,因此基本上与以下内容相同:

var tfun = function(_, at) {
  with(_) { return (eval(text)); };
}
因此,
文本
变量中的任何内容都将被计算并从函数返回


注意:通常应避免使用
eval
函数,因为从变量动态创建代码也会做同样的事情,所以通常也应避免使用该函数。有一些情况下需要
eval
,但大多数情况下不需要,因此您应该尝试找到正确的方法来执行您尝试执行的操作。

这里创建了一个函数,该函数将返回传递到
tfun()
的对象上存储在变量
text
中的键的值

以这种方式创建新函数时,第一个参数指函数的参数,最后一个参数指函数本身。这里我们有两个参数,分别是
\uu
at
,然后是函数体

with()
是一条语句,表示在指定对象的上下文中执行以下代码行。因此,
with()
表示通过拖动
中存储的键
文本
来执行返回语句

下面是一个例子:

var text = "name";
var obj  = { "name" : "Bob" };

var tfun = new Function("_", "at" , "with(_) {return (" + text + ");}" );

tfun( obj ); // returns "Bob"

我不知道为什么
at
参数在那里,因为它没有被使用。

重要的部分实际上是
text
at
只是函数的参数(比如
函数tfun({,at){}
),你可以在这里阅读更多关于
的内容:你在哪里找到这个怪物的?@CD不敢相信我忘了包括源代码,编辑过的@菲利克斯,谢谢!嗨,谢谢你的帮助,我补充了来源。你会说消息来源做得不恰当吗?通常也应该避免将
一起使用。这两个答案都非常有用,如果可以,我也会检查你,谢谢
文本
可能包含对
at
的引用,这很可怕。