首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的javascript计算器将5^5+5^5看作类似于5^5+5+5的东西。

我的javascript计算器将5^5+5^5看作类似于5^5+5+5的东西。
EN

Stack Overflow用户
提问于 2019-10-29 19:54:55
回答 1查看 64关注 0票数 1

所以我最近做了一个javascript计算器,它运行得很好,除非我开始添加指数。

下面是包含我的计算器的代码片段,您可以自己尝试类似5^5+5^5,它等于6250,但我的计算器是3135。

代码语言:javascript
运行
复制
var isReset = 1;
function num(number){
  if(isReset == 1){document.getElementById("display").innerHTML = number.toString();isReset=0;}
else{
document.getElementById("display").innerHTML = document.getElementById("display").innerHTML + number.toString();}
}
function calculate(){
  document.getElementById("display").innerHTML = eval(document.getElementById("display").innerHTML.replace("^", "**").replace("x", "*").replace("÷", "/").replace("√", "Math.sqrt"));
isReset=1;
}
代码语言:javascript
运行
复制
#container{
  position:absolute;
  left:40%;
  border:1px grey solid;
  top:40px;
}
代码语言:javascript
运行
复制
<div id="container">
<div id="display">0</div>
<button onclick="num(1)">1</button>
<button onclick="num(2)">2</button>
<button onclick="num(3)">3</button>
<button onclick="document.getElementById('display').innerHTML = '0';isReset=1;">C</button>
<br>
<button onclick="num(4)">4</button>
<button onclick="num(5)">5</button>
<button onclick="num(6)">6</button>
<button onclick="num('&#247;')">&#247;</button>
<br>
<button onclick="num(7)">7</button>
<button onclick="num(8)">8</button
><button onclick="num(9)">9</button>
<button onclick="num('x')">x</button>
<br><button onclick="num('+')">+</button>
<button onclick="num(0)">0</button>
<button onclick="num('.')">.</button>
<button onclick="num('-')">-</button>
<br>
<button onclick="calculate()">=</button>
<button onclick="num('^')">^</button>
<button onclick="num('√&#40;')">√</button>
<button onclick="num('&#40;')">&#40;</button>
<br><button onclick="num('&#41;')">&#41;</button>
<button onclick="if(document.getElementById('display').innerHTML.length !== 1){document.getElementById('display').innerHTML = document.getElementById('display').innerHTML.substring(0, document.getElementById('display').innerHTML.length - 1);}else{document.getElementById('display').innerHTML = '0';isReset=1;}">Del</button>
</div>

这看起来像是在做5^5+5+5,我不知道为什么。

有人能告诉我为什么会发生这种事吗?我能做些什么来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-29 19:59:15

在JavaScript replace中,当与字符串模式一起使用时,只替换该模式的第一个实例。是的,真让人费解。

代码语言:javascript
运行
复制
console.log('bbbb'.replace('b', 'a'));

您必须使用带有g标志的正则表达式来替换所有这些字符,然后您必须考虑正则表达式中哪些字符具有特殊意义。

代码语言:javascript
运行
复制
.replace(/\^/g, '**')

使用正则表达式的String.prototype.replace的另一种选择是拆分,然后加入:

代码语言:javascript
运行
复制
.split('^').join('**')  // equivalent to .replaceAll('^', '**')
                        // if replaceAll existed

没有这个,你就会得到(5**5 + 5) XOR 5

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58614496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档