hook代码不是很明白

我找到的hook代码如下:

function myfunction(x, y) {
    if (x > y) {
        return "是原来的方法";
    } else {
        return "方法参数被修改了";
    }
    myfunction(2, 1) //原来方法的执行结果
    "是原来的方法"
    
    
    var xxx = myfunction //这里开始替换原来的方法,吧myfunction辅助给xxx
    myfunction = function(x, y) //这里再修改原来的myfunction这方法,一样的给他传两个值,在后面的函数里面去修改这两个值
    {
        var x = 5,
            y = 6; //这个位置就是把xy值改了,覆盖原来的方法的值
        return xxx(x, y) //这个再把修改过后的值传给原来的myfunction方法。
    }
    myfunction(1, 2) //这里是hook过后的方法执行结果,和原来执行传的值一样,但是返回值却变了
    "方法参数被修改了"

对于这段代码,我的理解是用x=5,y=6替换了原本的x=2,y=1;但是为什么最后写的却是x=1,y=2呢?

斜黑体部分你能看明白你就懂了,你要明白函数赋值给变量存储的是引用地址
function myfunction(x, y) { 这个定义了myfunction方法,提升全局变量myfunction
if (x > y) {
return "是原来的方法";
} else {
return "方法参数被修改了";
}
}
myfunction(2, 1) //原来方法的执行结果
"是原来的方法"
var xxx = myfunction //这里开始替换原来的方法,吧myfunction辅助给xxx 这里将myfunction方法引用地址传给了xxx
myfunction = function(x, y) //这里再修改原来的myfunction这方法,一样的给他传两个值,在后面的函数里面去修改这两个值 这里是重新定义了myfunction方法
{
var x = 5,
y = 6; //这个位置就是把xy值改了,覆盖原来的方法的值
return xxx(x, y) //这个再把修改过后的值传给原来的myfunction方法。 这里是调用原先最开始的myfunction方法
}
myfunction(1, 2) //这里是hook过后的方法执行结果,和原来执行传的值一样,但是返回值却变了
"方法参数被修改了"