You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用keydown让函数单次运行?及!符号含义解析

问题解答

一、代码中!的含义

!是JavaScript里的逻辑非运算符,作用是对布尔值取反:

  • 要是变量值为true,!变量就会变成false
  • 要是变量值为false,!变量就会变成true
    你代码里的!started,意思就是“当started为false(游戏还没启动)时”,只有满足这个条件,才会执行后面的代码。

二、让keydown事件触发的函数仅运行一次的方法

结合你的需求(按下按键修改标题,启动后不再重复触发),可以参考keypress事件的逻辑,给keydown加上状态锁:

修改后的keydown代码

$(document).keydown(function () {
  if (!started) {
    $("#level-title").text("Level " + level);
    nextSequence();
    started = true;
  }
});

核心思路

  1. 先定义一个全局状态变量started,初始值设为false(表示游戏未启动)
  2. 触发keydown事件时,先判断!started(也就是游戏还没启动),满足条件才执行启动逻辑:修改h1标题为Level 0(对应初始level值)、调用nextSequence()、把started设为true
  3. 之后再按键盘,started已经是true,!started就变成false,不会再执行里面的代码,自然就实现了函数只运行一次的效果

原代码的问题

你原来的keydown事件只判断了!started就调用nextSequence(),但没把started改成true,所以只要started还是false,每次按键都会重复触发,加上started = true就能锁定状态,避免重复执行。

内容的提问来源于stack exchange,提问作者AbdulRehman Rizwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:05:37