我怎样才能在这个其他函数上访问这个函数的结果?

How can I access the result of this function on this other function?

所以我有这个文本输入字段,我有 showKeyCode() 函数,它从文本输入中获取值并将按下的键的键码表示打印到控制台.

function showKeyCode() {
$('#inputfield').keyup(function(e){
   $(this).val(String.fromCharCode(e.keyCode)); 
   console.log(e.keyCode);
});
}
const r4 = document.querySelector("#inputfield");
r4.addEventListener('input', showKeyCode2);

现在我想获取这个值并在下面的函数中使用它。


 $(document).keydown(function(e) {
    if (e.which ==  [I WANT TO PUT THE RESULT FROM showKeyCode() HERE] ){
      document.querySelector('#test').click()
      console.log("Clicked");
    }
});

让我们总结一下我在这里要做的事情。如果您是游戏玩家,您一定使用过按键绑定,例如:按 [M] 显示小地图。按[H]显示hud.

我在这里尝试让用户通过在文本字段中键入来自定义键绑定。 showKeyCode() 函数获取字符并将其转换为将在第二个函数中使用的键码。

我可以像这样直接在脚本中输入键码

if (e.which ==  84 ){}

但我希望用户在游戏中更改它。

从技术上讲 “你不能” 但是有一个 hacky 和肮脏的解决方法。全局变量。

//outside
let value = '';

function showKeyCode() {
  $('#inputfield').keyup(function(e){
     $(this).val(String.fromCharCode(e.keyCode)); 
     value = e.keyCode;
  });
}


$(document).keydown(function(e) {
    if (e.which ==  [value] ){
      document.querySelector('#test').click()
      console.log("Clicked");
    }
});

如果在按下键之前调用了 sowKeyCode,这应该可以工作

现在,我不推荐使用全局变量,但有时这是唯一的方法,也许你可以使用不同的方法,比如把它放在 class 或使用其他非常适合状态跟踪的库。