JS / JQUERY不更新string数组值

我正在面对一个我正在创build的Web应用程序的问题。

我使用node.js作为后端,服务器发送(使用socket.io )这样的string“ 0010000110 0 ”。

在客户端我有:

 $(document).on("pageinit", function(){ var socket = io.connect('http://localhost:8080'); var tmpData = []; socket.on('recData', function(data){ tmpData = data; //here I put the received string in the tmpData array }); //checking for the string array state $("#deskLight-1").on("vclick", function(){ if(tmpData[2] == '1'){ tmpData[2] = '0'; alert(tmpData); } else if(tmpData[2] == '0'){ tmpData[2]='1'; alert(tmpData); } }); }); 

所以这个想法是打开/closures灯。 这只是代码的一部分,所以我们只关注tmpData[2]

如果条件工作正常,警报对话框只显示旧的tmpDatastring(所以这一个0010000110 0 )。 它应该改成这个00**0**0000110 0

我不明白为什么tmpData[2] = '0'tmpData[2] = '1'不更新索引值。 有任何想法吗?

JavaScript中的string是不可变的:

 var str = '123'; str[1] = 'x'; console.log(str); // '123' 

您似乎想要将数据用作字符数组,因此将其存储为数组:

 socket.on('recData', function(data){ tmpData = data.split(''); // array of characters }); 

如果您需要(更新的)string,请记住将字符连接在一起:

 console.log(tmpData.join(''));