当我运行以下功能时,有人可以向我解释为什么我收到错误消息Uncaught ReferenceError: Invalid left-hand side in assignment
。
function number(a){
var last = parseInt(stream.charAt(stream.length-1));
if(stream === ''){
stream = a;
}
else if(isNumber(last)){
console.log(last);
stream.charAt(stream.length-1) = last*10 + a;
}
else{
stream += ' '+a;
}
document.getElementById('display').innerHTML = stream;
}
答案 0 :(得分:5)
错误在这一行:
stream.charAt(stream.length-1) = last*10 + a;
您无法为stream.charAt()
分配内容。该函数只返回一个字符。
从我可以收集到的内容中,您获得stream
中的最后一个字符。如果它是一个整数,则将其乘以10
,然后将a
追加到流中。
而不是这样,这将得到相同的结果:
stream += '0' + a;
由于您将值重新添加到数组中,如果将单个数字整数与10
相乘,或者只添加"0"
,则无关紧要在它之后。
答案 1 :(得分:0)
您的问题似乎是此代码
stream.charAt(stream.length-1) = last*10 + a;
charAt返回一个字符串,而不是流中的位置(我假设你的流是一个字符串),所以你不能覆盖它。
要解决此问题,您可以执行以下操作:
stream = stream.substring(0,stream.length-1)+last*10+a
我不允许发表评论,但Cerbrus的答案不适用于最后=' 0'并且在这种情况下将添加一个额外的0,这应该工作
答案 2 :(得分:-1)
问题是你不能像这样分配
stream.charAt(stream.length-1) = last*10 + a;