这个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
的引用,这很可怕。