从其他 JS 执行一个函数

Executing one function from other JS

本文关键字:一个 函数 其他 JS 执行      更新时间:2023-09-26

我有一个java脚本,我想要一个函数,它接受一个参数并执行不同的函数。

我现在有类似的东西:

<body onLoad="funct1(5)">
<script>
    funct1(a){
        var house = [];
        int x = 20;
        int y = 250;
        for(var i= 0; i<a; i++){
            house [i] = funct2(x,y);
            y=y+50;
        }
        for (var j = 0; j<a; j++){
            house[j]();
        }
    }
</script>
<script>
    funct2(x,y){
    //doing something with that 2 variables, drawing a house.
    } 
</script>    

我试图将 2 个函数放在一个脚本中,但它也没有用。有没有可能的方法可以从另一个函数执行一个函数并将其放入数组中以存储它并在之后绘制它?

如果你在一个或两个脚本标签中执行此操作,这并不重要,因为无论如何浏览器都会同步执行它们。x 和 y 的变量声明是错误的。你的函数声明也是错误的。无论如何,它们只是语法错误,您最终会避免。

您不能调用 "house[j] ()",因为您已经执行了此语句中的函数:"funct2(x,y)"。如果你想用事先分配的参数来存储函数调用,那么你应该使用 : "house [i] = funct2.bind(this, x, y)",即每当函数被调用时,你都会将参数绑定到函数,并将这个可调用的绑定函数的副本存储在 house[i] 中。

我想这就是你想要的:

<body onLoad="funct1(5)">
<script>
    function funct1(a){
        var house = [];
        var x = 20;
        var y = 250;
        for(var i= 0; i<a; i++){
            house [i] = funct2.bind(this, x, y);
            y=y+50;
        }
        for (var j = 0; j<a; j++){
            house[j]();
        }
    }
</script>
<script>
    function funct2(x,y){
        console.log('drawing house with x '+x+' and y '+y);
    }
</script>

这应该适用于相同的脚本标记。不过,您需要将int xint y更改为var xvar y

<script>
    var funct1= function(a){
        var house = [];
        var x = 20;
        var y = 250;
        for(var i= 0; i<a; i++){
            house [i] = funct2(x,y);
            y=y+50;
        }
        for (var j = 0; j<a; j++){
            house[j]();
        }
    }
    var funct2 = function(x,y){
    //doing something with that 2 variables, drawing a house.
        return function() { 
            //do stuff with x and y
        }
    } 
</script>

funct2现在也返回一个函数,允许您对结果调用house[j]()

您正在寻找的东西实际上非常复杂。您希望func2返回基于 x 和 y 的函数。这可以通过像这样动态定义它们,然后返回它们并将它们保存在 house 数组中来实现。

但是你为什么要这样做呢?不要将它们保存在 house 数组中,而只是让 func2 直接绘制它们。