对 Javascript 感到困惑

Confused on Javascript

提问人:LGGJR 提问时间:8/15/2022 更新时间:8/15/2022 访问量:52

问:

我一直在学习 javascript 中的 this 关键字,但我不理解以下代码。我试图确定代码在做什么,但是每当 y() 调用变量 Y 时,它都会冻结所有内容。此外,我很确定 b 变量在函数立即运行时为 true,然后在之后的任何时候为 false。

无论如何,有人可以向我解释此代码吗?我认为“这个”实际上是通过 var y,但请纠正我:

    var x = (function(){
        var b = !![];
        return function(p1,p2){
            var z = b ? function(){
                if(p2){
                    var c = p2.apply(p1,arguments)
                    return (p2=null),c;
                }
            }:function(){};
            return (b=![]),z;
        };
    }()),
    y = x(this,function(){
        return 
       y.toString().search('(((.+)+)+)+$').toString().constructor(y).search('(((.+)+)+)+$');
    });
    y(); //freezes here
JavaScript 构造函数 this apply

评论

2赞 Pointy 8/15/2022
这些代码从何而来?它的来源说它应该做什么,为什么这样写?
0赞 Pointy 8/15/2022
另外,“冻结”是什么意思?是否报告了错误?
1赞 Wiktor Zychla 8/15/2022
冻结可能是由于不间断的递归。代码看起来像是随机的东西,没有上下文就很难推理。
0赞 Konrad 8/15/2022
作为参数传递给的匿名函数在内部代码运行之前返回,因此没有意义x
0赞 LGGJR 8/15/2022
老实说,这是我试图找出一些恶意软件的尝试。但是,我对 Javascript 完全陌生。此代码是从附加到我收到的电子邮件的 html 文件中引用的脚本的一部分。

答: 暂无答案