Javascript 来自Array.join()的不同结果

Javascript 来自Array.join()的不同结果,javascript,join,push,Javascript,Join,Push,请看以下代码: var words = []; var temp_words =[]; var div = document.getElementById('div'); document.onkeypress = function(evt) { evt = evt.keyCode; var event = String.fromCharCode(evt); // alert(event); temp_words.push(event);

请看以下代码:

var words = [];        
var temp_words =[];
var div = document.getElementById('div');
document.onkeypress = function(evt) {
    evt  = evt.keyCode;
    var event = String.fromCharCode(evt);
    // alert(event);
    temp_words.push(event);
    var w = temp_words.join("");
    words.push(w);
}
HTML

现在在谷歌控制台我看到了结果

如果我输入文本区域sanmevg saini,则
单词
数组返回:

["s", "sa", "san", "sanm", "sanme", "sanmev", "sanmevg", "sanmevg ", "sanmevg s", "sanmevg sa", "sanmevg sai", "sanmevg sain", "sanmevg saini"]   
[“sanmevg saini”]

如果我写
[''a,'b','c',''d'].join('''')
,那么它将返回预期的结果,即

['abcd']
。那么我的代码有什么问题呢?

每次按下一个键,另一个单词就会添加到
单词数组中。只需使用
words=temp_words.join(“”)

没有必要使用var temp_这个词,var这个词就足够了。单词数组会在每次按键时存储临时单词的合并值,以便获得错误的值。代码应如下所示:

<textarea id="div"></textarea>
<script>
    var words = [];        
    var temp_words =[];
    var div = document.getElementById('div');
    document.onkeypress = function(evt){
        evt  = evt.keyCode;
        var event = String.fromCharCode(evt);
        words.push(event);
        div.innerHTML = words.join("")
    }
</script>

var-words=[];
var temp_words=[];
var div=document.getElementById('div');
document.onkeypress=功能(evt){
evt=evt.keyCode;
var event=String.fromCharCode(evt);
推(事件);
div.innerHTML=words.join(“”)
}
我为您写了一篇JSFIDLE:
顺便说一句,你的代码很难看,缩进是错误的,你的代码应该和你女朋友一样漂亮。

检查临时单词的内容
temp\u单词中的内容是
[“s”,“a”,“n”,“m”,“v”,“e”,“g”,“s”,“a”,“i”,“n”,“i”]
而不是
单词。按(w)
,试试
单词=w.split(“”)
;“w”的内容如何?谢谢迪亚兹先生和科里爵士对我问题的关注。然后只需
words=[temp\u words.join(“”)]
。只是我看不到只有一个值的数组的点。@openorclose:是的,这是真的。在这种情况下,拥有任何数组都毫无意义。只是一个附加了字符的
words
变量。但是,除非需要某种历史记录,否则事件似乎应该将值直接从文本框复制到其目的地。