js数字函数用于计算器错误

时间:2016-11-18 08:17:03

标签: javascript

当我运行以下功能时,有人可以向我解释为什么我收到错误消息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;
}

3 个答案:

答案 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;