JS String的长度为n,但只有n-1个字符。使用str = str.slice(0,-1)

时间:2016-12-05 03:30:31

标签: javascript string slice

我正在使用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。

0 个答案:

没有答案