用于构建javascript计算器的开关方法

用于构建javascript计算器的开关方法,javascript,switch-statement,calculator,Javascript,Switch Statement,Calculator,我试图通过使用开关方法来构建一个计算器。出于某种原因,我似乎无法理解我的加法函数是否有效,但我的减法函数却不能。这可能是一个简单的解决方案,但我算是个新手。任何洞察都会很棒!!谢谢 var operatorPressed=false; var操作数=0; var currentOperator=0; var操作请求=“”; //创建计算器显示输入 var displayNumber=document.getElementById(“显示”); //清除计算器显示和var a值 函数clear

我试图通过使用开关方法来构建一个计算器。出于某种原因,我似乎无法理解我的加法函数是否有效,但我的减法函数却不能。这可能是一个简单的解决方案,但我算是个新手。任何洞察都会很棒!!谢谢


var operatorPressed=false;
var操作数=0;
var currentOperator=0;
var操作请求=“”;
//创建计算器显示输入
var displayNumber=document.getElementById(“显示”);
//清除计算器显示和var a值
函数clearMemory(){
displayNumbers.value=“”;
前置操作数=0;
//var a=0;
//控制台日志(a);
};
函数clearDisplay(){
displayNumbers.value=“”;
};
//在计算器屏幕上显示值
var displayValue=函数(num){
如果(displayNumbers.value.length>9){
displayNumbers.value=“错误”;
}否则{
displayNumbers.value=num;
//document.getElementById(“显示”).value+=Num;
};
};
函数handleNumberClick(num){
CurrentOperator=operatorPressed?num:displayNumbers.value+num;
运算符pressed=false;
显示值(当前操作数);
}
函数clearNumberRentered(){
NumberRentered='';
clearDisplay();
}
//操作员
//作用
功能手柄操作点击(操作员){
var结果;
运算符pressed=true;
开关(要求操作){
案例“添加”:
结果=加法(前操作数、当前操作数);
打破
“减法”格:
结果=减法(前操作数、当前操作数);
打破
违约:
结果='';
}
如果(result){//如果发生实际计算,我们将把覆盖结果存储到前一个操作数
显示值(结果);
前置操作数=结果;
}否则{//如果不进行计算,我们只需将输入值设置为前一个操作数
PrevOperator=当前操作数;
}
日志(“操作:%s%d到%d”,操作请求,当前操作数,前操作数);
operationRequested=操作员| | operationRequested;
}
函数加法(num,加法器){
var sum=parseInt(num)+parseInt(加法器);
回报金额;
}
函数减法(num,减法器){
变量差=parseInt(num)-parseInt(减法器);
收益差;

}
根据您提供的信息,可能的原因是
操作请求
是在函数末尾定义的,而不是在
开关
语句之前定义的

函数handleOperationClick(操作员)

应该在底线以上

switch(operationRequested){

operationRequested
来自哪里?
prevOperator
currentOperator
来自哪里?当您添加一些调试以显示这些变量在开关内和开关前的位置时会发生什么情况,以便您可以看到流正在做什么?抱歉。我编辑并发布了完整的脚本。是的,对不起。似乎我没有发布完整的脚本。我在顶部声明了我的operationRequested变量。
switch(operationRequested){