跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
2026/6/7 21:30:18 网站建设 项目流程

前言

在JavaScript的学习过程中,掌握数学运算和逻辑判断是打好基础的关键一步。MDN的数学运算测试题不仅涵盖了基本的算术运算符,还涉及变量声明、数据类型转换、条件判断以及严格相等比较等多个核心知识点。本文将详细解析这三个数学测试题,帮助读者深入理解JavaScript中的数值操作和逻辑判断。

测试一:基础数学运算符与奇偶性判断

核心知识点:算术运算符的组合使用
第一个测试题主要考察基本数学运算符的使用,包括加法、减法、乘法和取模运算。这些运算符是JavaScript中最基础的数学操作工具,它们的优先级和组合方式直接影响计算结果。

加法运算符用于将两个数值相加,减法运算符用于计算数值之间的差值,乘法运算符则用于计算乘积。取模运算符返回除法运算的余数,这是判断一个数字是奇数还是偶数的关键工具。

变量命名的最佳实践

在编写代码时,变量命名应当具有明确的意义,能够清晰地表达变量的用途。使用有意义的变量名不仅提高了代码的可读性,也便于后续的维护和调试。在本题中,我们需要创建四个包含数字的变量,并赋予它们合适的名称。

解题步骤分析

首先,我们需要创建四个数值变量。为了保持代码的清晰性,我们可以根据它们在后续计算中的角色来命名。例如,将前两个变量命名为firstNumber和secondNumber,后两个变量命名为thirdNumber和fourthNumber。当然,也可以选择其他有意义的名称,只要能够清晰地表达变量的用途即可。

接下来,我们需要将前两个变量相加,并将结果存储在另一个变量中。这一步是简单的加法运算,使用加法赋值运算符或者直接使用加法操作符都可以完成。

然后,我们需要从第三个变量中减去第四个变量,并将结果存储在另一个变量中。这一步使用的是减法运算符,与加法运算类似,操作相对简单。

最后,我们需要将前两步得到的结果相乘,得到最终结果,并将其存储在名为finalResult的变量中。之后,我们需要判断finalResult是否为偶数。判断偶数的标准是,如果一个数字除以2的余数为0,则该数字为偶数,否则为奇数。取模运算符可以精确地计算出余数,因此我们可以通过计算finalResult除以2的余数来判断奇偶性。如果余数为0,则evenOddResult的值为0;如果余数为1,则evenOddResult的值为1。


参考代码实现
根据上述分析,我们可以编写如下代码:

letfinalResult;letevenOddResult;// 创建四个数值变量letnum1=10;letnum2=20;letnum3=30;letnum4=8;// 将前两个变量相加letsum=num1+num2;// 从第三个变量中减去第四个变量letdifference=num3-num4;// 将相加和相减的结果相乘finalResult=sum*difference;// 判断finalResult是否为偶数evenOddResult=finalResult%2;

在这段代码中,num1和num2分别为10和20,它们的和为30。num3和num4分别为30和8,它们的差为22。30乘以22的结果是660,这个结果显然不等于题目要求的48,因此需要调整初始值。我们需要找到四个数字,使得前两个数字的和与后两个数字的差相乘等于48,并且这个结果是偶数。

经过计算,可以选择num1为8、num2为4、num3为10、num4为4。8加4等于12,10减4等于6,12乘以6等于72,也不是48。通过进一步计算,可以使用num1为6、num2为2、num3为15、num4为3。6加2等于8,15减3等于12,8乘以12等于96。实际上,我们需要的是48,因此可以使用num1为4、num2为4、num3为14、num4为2。4加4等于8,14减2等于12,8乘以12等于96。经过多次尝试,可以使用num1为2、num2为4、num3为10、num4为4。2加4等于6,10减4等于6,6乘以6等于36。最终找到合适的组合,num1为8、num2为4、num3为12、num4为4。8加4等于12,12减4等于8,12乘以8等于96。要得到48,可以用num1为2、num2为2、num3为7、num4为1。2加2等于4,7减1等于6,4乘以6等于24。使用num1为6、num2为2、num3为10、num4=2。6加2等于8,10减2等于8,8乘以8等于64。在实际测试中,根据题目要求最终结果应为48,可以使用num1为4、num2为8、num3为16、num4为10。4加8等于12,16减10等于6,12乘以6等于72。使用num1为5、num2=7、num3=15、num4=7。5加7等于12,15减7等于8,12乘以8等于96。最终可以使用num1=12、num2=0、num3=8、num4=4。12加0等于12,8减4等于4,12乘以4等于48,且48是偶数,余数为0。


因此正确代码为:

letnum1=12;letnum2=0;letnum3=8;letnum4=4;letsum=num1+num2;letdiff=num3-num4;finalResult=sum*diff;evenOddResult=finalResult%2;

测试二:运算符优先级与数据类型转换

核心知识点:运算符优先级
在JavaScript中,不同的运算符具有不同的优先级,这决定了表达式中运算的执行顺序。乘法、除法和取模运算符的优先级高于加法和减法运算符。如果不加括号,表达式会按照默认的优先级进行计算,这可能导致计算结果与预期不符。

在第二个测试题中,给定的表达式为result = 7 + 13 / 9 + 7。根据运算符优先级,除法运算会先于加法执行,因此实际的计算顺序是:先计算13除以9,然后再与7和7相加。13除以9的结果约为1.444,加上7和7后约为15.444。而result2 = (100 / 2) * 6,由于括号的存在,先计算100除以2得到50,再乘以6得到300。

调整表达式以得到期望结果

题目要求最终结果应为4633.33,因此需要对原始表达式进行修改,以改变运算顺序。通过添加括号,我们可以强制指定某些运算优先执行。在第一个表达式中,我们可能希望通过括号将加法运算分组,确保所有加法都在除法之前执行,或者根据需要的数值进行调整。

实际上,题目中的表达式可能需要整体修改,因为7加13除以9加7的结果远小于4633.33。这提示我们需要重新审视表达式,可能原表达式中的数字本身就需要调整,或者运算顺序需要彻底改变。由于题目没有明确禁止修改表达式的数值,只提到“可能需要添加或修改一些括号”,因此数值本身可能保持不变,仅通过括号改变运算顺序。

经过计算,将result的表达式修改为(7 + 13) / (9 + 7)的结果为20除以16等于1.25,这与预期相去甚远。因此可以判断原题中的表达式数值是示例,实际测试时需要根据期望结果倒推出正确的表达式,但题目提供的表达式本身可能已经包含所需数值,只是需要通过括号改变运算顺序。

由于最终结果4633.33与300的乘积有关,而result2已经固定为300,那么result的期望值应为4633.33除以300,约等于15.444。而7加13除以9加7的原始计算结果恰好约为15.444,因此实际上result的表达式不需要任何修改,result2的表达式也不需要修改,直接相乘即可得到4633.33乘以300?不对,15.444乘以300等于4632,而不是4633.33,存在精度差异。

仔细分析,13除以9等于1.4444444444444444,加上14等于15.444444444444445,乘以300等于4633.333333333334,四舍五入保留两位小数后正好是4633.33。因此原始表达式本身就是正确的,无需添加任何括号。

乘法赋值简写

在得到result和result2之后,需要使用赋值简写将result乘以result2的结果重新赋值给result。赋值简写是JavaScript提供的一种语法糖,可以简化代码书写。例如,result = result * result2可以简写为result *= result2。

格式化数字到两位小数

数字格式化可以使用toFixed方法,该方法将数字转换为字符串,并保留指定的小数位数。需要注意的是,toFixed方法返回的是字符串类型,而不是数字类型,这就是为什么后续需要进行数据类型检查的原因。

数据类型检查与转换

typeof运算符用于检查变量的数据类型。对于使用toFixed方法处理后的结果,其类型为字符串。如果finalResult是字符串,需要使用parseFloat或Number函数将其转换回数字类型,并存储在finalNumber变量中。

参考代码实现

letresult=7+13/9+7;letresult2=(100/2)*6;result*=result2;letfinalResult=result.toFixed(2);letfinalNumber;if(typeoffinalResult==="string"){finalNumber=parseFloat(finalResult);}

测试三:比较运算符与严格相等

核心知识点:比较运算符
比较运算符用于比较两个值的大小关系,返回布尔值true或false。大于运算符用于判断左侧的值是否大于右侧的值,小于运算符用于判断左侧的值是否小于右侧的值。在第一个和第二个陈述中,我们需要使用这些运算符进行比较。

严格相等运算符

第三个陈述要求判断两个密码是否匹配。这里需要注意区分相等运算符和严格相等运算符。相等运算符会在比较之前进行类型转换,而严格相等运算符不会进行类型转换,它要求值和类型都相同。在这个场景中,密码是字符串,且大小写敏感,因此应该使用严格相等运算符来确保完全匹配。

大小写敏感性

在字符串比较中,大小写是不同的字符。pass1的值为stromboli,pass2的值为stROmBoLi,两者除了首字母都是小写外,其余字母的大小写不同,因此它们不相等。严格相等比较会返回false。

变量命名与结果存储
根据题目要求,需要将三个测试的结果分别存储在名为weightComparison、heightComparison和pwdMatch的变量中。这些变量应该存储布尔值,即true或false。

参考代码实现

consteleWeight=1000;constmouseWeight=2;constostrichHeight=2;constduckHeight=0.3;constpwd1="stromboli";constpwd2="stROmBoLi";letweightComparison=eleWeight<mouseWeight;letheightComparison=ostrichHeight>duckHeight;letpwdMatch=pwd1===pwd2;

eleWeight的值为1000,mouseWeight的值为2,1000小于2这个陈述显然是假的,因此weightComparison的值为false。ostrichHeight的值为2,duckHeight的值为0.3,2大于0.3是真的,因此heightComparison的值为true。pwd1和pwd2的大小写不一致,严格相等比较返回false,因此pwdMatch的值为false。

总结

通过这三个测试题,我们系统地复习了JavaScript中的数学运算符、变量声明、数据类型转换、比较运算符以及严格相等判断等核心知识点。数学运算不仅仅是简单的加减乘除,还需要考虑运算符优先级对计算结果的影响。在进行数值格式化时,需要注意toFixed方法返回的是字符串,需要根据实际情况进行类型转换。逻辑判断中,比较运算符和严格相等运算符的使用需要根据具体场景做出正确选择。掌握这些基础知识,将为后续学习JavaScript的高级特性打下坚实的基础。


还在为 JavaScript 代码写得像“意大利面条”、逻辑混乱难以维护而头秃?收藏本文持续跟进,后续将系统分享 JS 高效语法糖、浏览器兼容与 Polyfill 实战、手写核心源码解析、常见坑点避雷指南,从基础语法到进阶逻辑一站式打通,助你快速提升前端开发硬实力!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询