新手求教:如何计算全局与局部变量的求和、乘积及取模?
JavaScript全局/局部变量计算问题修正与原理
问题点分析
你当前的代码存在两个核心问题:
- 函数内的局部变量
a、b覆盖了同名全局变量,导致函数完全没有使用全局的40和70进行计算; - 函数内部计算了
c、d、e但没有输出结果,也没有暴露这些值,运行后看不到任何计算结果。
修正后的代码
下面是能同时计算全局、局部变量两组结果并输出的代码:
// 全局变量 var a = 40; var b = 70; function var_ops_5() { // 局部变量(改名避免和全局变量冲突) var localA = 4; var localB = 7; // 局部变量计算:求和、乘积、取模 var localSum = localA + localB; var localProduct = localA * localB; var localMod = localA % localSum; // 全局变量计算(直接访问全局作用域的a、b) var globalSum = a + b; var globalProduct = a * b; var globalMod = a % globalSum; // 打印两组计算结果 console.log("=== 局部变量计算结果 ==="); console.log(`求和:${localSum}`); console.log(`乘积:${localProduct}`); console.log(`取模:${localMod}`); console.log("\n=== 全局变量计算结果 ==="); console.log(`求和:${globalSum}`); console.log(`乘积:${globalProduct}`); console.log(`取模:${globalMod}`); } // 调用函数执行计算 var_ops_5();
核心原理讲解
变量作用域规则
- 函数内部用
var声明的变量属于局部作用域,只能在函数内部访问;如果函数内没有声明同名变量,JS会自动向上查找全局作用域的变量。 - 我把局部变量改名为
localA、localB,就是为了避免覆盖全局变量,这样函数内可以同时访问全局的a、b和局部的localA、localB。
- 函数内部用
计算逻辑说明
- 求和:两个数值直接相加,比如局部的
4+7=11,全局的40+70=110; - 乘积:两个数值直接相乘,比如局部的
4*7=28,全局的40*70=2800; - 取模(
%运算符):返回第一个数除以第二个数的余数,比如4%11余数是4(因为11比4大,除不尽,余数就是本身),40%110余数是40。
- 求和:两个数值直接相加,比如局部的
结果输出与函数调用
- 用
console.log()把计算结果打印到浏览器控制台或Node.js终端,运行代码后就能看到结果; - 必须调用函数
var_ops_5(),否则函数只会被定义,不会执行内部的计算逻辑。
- 用
另一种写法(保留局部变量同名)
如果一定要保留局部变量的a、b命名,可以通过window.a(浏览器环境)访问全局变量:
// 全局变量 var a = 40; var b = 70; function var_ops_5() { // 局部变量(同名覆盖全局) var a = 4; var b = 7; // 局部计算 var localSum = a + b; var localProduct = a * b; var localMod = a % localSum; // 访问全局变量计算 var globalSum = window.a + window.b; var globalProduct = window.a * window.b; var globalMod = window.a % globalSum; console.log("局部结果:", {求和: localSum, 乘积: localProduct, 取模: localMod}); console.log("全局结果:", {求和: globalSum, 乘积: globalProduct, 取模: globalMod}); } var_ops_5();
内容的提问来源于stack exchange,提问作者user20086268
相关产品推荐
相关产品推荐

