Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于计算器错误的js数字函数_Javascript - Fatal编程技术网

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

Javascript 用于计算器错误的js数字函数,javascript,Javascript,有人能解释一下为什么我在运行下面的函数时会收到错误消息uncaughtreferenceerror:Invalid left-side in assignment function number(a){ var last = parseInt(stream.charAt(stream.length-1)); if(stream === ''){ stream = a; } else if(isNumber(last)){ console.l

有人能解释一下为什么我在运行下面的函数时会收到错误消息
uncaughtreferenceerror:Invalid left-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;
}

错误在这一行:

stream.charAt(stream.length-1) = last*10 + a;
无法将某些内容分配给
stream.charAt()
。该函数只返回一个字符

根据我收集的信息,您将从
中获取最后一个字符。如果是整数,则将其乘以
10
,然后将
a
附加到流中

相反,这将得到相同的结果:

stream += '0' + a;

由于要将值添加回数组中,因此将一个单位数整数乘以
10
,或者只在其后面添加一个
“0”
,实际上并不重要。

错误在这一行:

stream.charAt(stream.length-1) = last*10 + a;
无法将某些内容分配给
stream.charAt()
。该函数只返回一个字符

根据我收集的信息,您将从
中获取最后一个字符。如果是整数,则将其乘以
10
,然后将
a
附加到流中

相反,这将得到相同的结果:

stream += '0' + a;

由于要将值重新添加到数组中,因此将一个单位数整数乘以
10
,或者只在其后添加一个
“0”
,实际上并不重要。

问题是不能这样赋值

 stream.charAt(stream.length-1) = last*10 + a;

问题是你不能这样分配

 stream.charAt(stream.length-1) = last*10 + a;

你的问题似乎是这个代码部分

stream.charAt(stream.length-1) = last*10 + a;
charAt返回一个字符串,而不是流中的位置(我假设流是一个字符串),因此不能覆盖它

要解决此问题,您可以执行以下操作:

 stream = stream.substring(0,stream.length-1)+last*10+a

我不允许发表评论,但Cerburs的答案对last='0'不起作用,并且在本例中会添加一个额外的0,这应该起作用

您的问题似乎是这个代码部分

stream.charAt(stream.length-1) = last*10 + a;
charAt返回一个字符串,而不是流中的位置(我假设流是一个字符串),因此不能覆盖它

要解决此问题,您可以执行以下操作:

 stream = stream.substring(0,stream.length-1)+last*10+a

我不允许发表评论,但Cerburs的答案对last='0'不起作用,并且在本例中会添加一个额外的0,这应该可以工作,因为它是
未定义的
添加到您的javascript
stream
很可能是一个全局的,伙计们。这不是这里的问题。Alice,
stream.charAt(stream.length-1)
应该做什么?“stream”确实是一个全局变量。我试图调试一些JavaScript计算器代码,但这些代码不起作用。代码是一个更大的函数的一部分:
函数号(a){var last=parseInt(stream.charAt(stream.length-1));if(stream==='''{stream=a;}else if(isNumber(last)){console.log(last);stream+='0'+a;}else{stream+='='+a;}
stream
未定义的
var-stream
添加到您的javascript
stream
很可能是全局的,伙计们。这不是问题所在。Alice,
stream.charAt(stream.length-1)到底是什么
应该做什么?'stream'确实是一个全局变量。我正在尝试调试一些不起作用的JavaScript计算器代码。该代码是更大函数的一部分:
函数号(a){var last=parseInt(stream.charAt(stream.length-1));if(stream==''{stream=a;}else if(isNumber(last)){console.log(last);stream+='0'+a;}其他{stream+=''+a;}
Experience speaksthank you@Cerbrus,它现在起作用了,非常感谢。Experience speaksthank you@Cerbrus,它现在起作用了,非常感谢。1个正确答案就足够了。无需重复。:)我只是想帮助sir 1个正确答案就足够了。无需重复。:)我只是想帮助sir