我正在使用Khan Academy的网页制作一个javascript项目(你可以看到here)。我提出这个问题是因为我不知道这个问题是由于javascript的微妙之处,还是由于Khan Academy的系统造成的。
以下是对问题的描述:
var keyPressed = function() {
if (keyCode === BACKSPACE) {
debug(textBuffer.length);
debug(textBuffer);
textBuffer = textBuffer.slice(0,-1);
}
};
每当我按退格键时,本质上都会运行此代码。当我调用代码第一次时,它工作正常;最后一个字符将从我的全局变量textBuffer
中删除。但是,对此代码的任何后续调用都不会对我的textBuffer
字符串执行任何操作,除非在调用之间更改了textBuffer
。通过使用debug
语句,我注意到字符串长度似乎太大了。
我希望我已经为某人提供了足够的细节来解决问题。有谁发生了什么?
编辑:这是问题的根源:尽管keyPressed
正确地注册退格,但还有另一个名为keyTyped
的函数在字符串中添加了一个不可见的'\b'
字符。这就是字符串出现的方式,只有2个字符但长度为3。