在JavaScript中同时调用函数和修改变量

Call function and modify variable at the same time in JavaScript

本文关键字:函数 修改 变量 调用 JavaScript      更新时间:2023-09-26

有没有一种方法可以同时调用函数和修改变量?拿着这个,<button onclick="change(); var con = true">click me</button>

<script>
function change() {
while (con == true) {
var x = event.clientX;
var y = event.clientY;
}
//do some more magical stuff
}
</script>

基本上,我只想在条件成立的情况下循环while循环,同时做一些更神奇的事情,这可能吗?

试试这个

<button onclick="window.con = true; change();">click me</button>
<script>
    window.con = false;
    function change() {
        while (window.con == true) {
            var x = event.clientX;
            var y = event.clientY;
            // Put some logic here to break the loop.
        }
       //do some more magical stuff
     }
</script>

如示例代码所示使用whilefor将在调用时锁定客户端的浏览器。考虑使用回调方式,例如使用setTimeout

使用setTimeout包装函数,返回切换函数的示例

function toggleableFn(fn, rate) {
    let timeout,
        run = false,
        loop;
    function looper(args) {
        if (!run) return; // double safety
        fn.apply(this, args);
        timeout = window.setTimeout(loop, rate);
    }
    return (...args) => {
        run = !run;
        if (run) {
            loop = looper.bind(this, args);
            loop();
            return true
        }
        else {
            window.clearTimeout(timeout);
        }
        return false;
    };
}
var rep = toggleableFn((x, y) => console.log(x, y), 1e3);
rep('foo', 'bar'); // true
// logs "foo" "bar" every second until you toggle with `rep(); // false`

我不建议采用这种方法。并不是说这不好,但为了把所有代码都放在正确的位置,我会明确地把所有代码放在函数中。

而且——无意冒犯——这种编码实践有点"老派",试着学习例如jQuery,所有的东西都有望比更清晰