如何修改JS代码使变量balls保留最后值而非每次重置为10
问题原因
你原代码每次运行都会显式将balls初始化为10,同时JS脚本运行在内存中,脚本执行结束后内存变量会被销毁,不做持久化存储的话自然无法保留上次更新的数值。根据你运行代码的环境不同,对应修改方案如下:
浏览器环境方案
借助浏览器提供的localStorage本地存储能力实现持久化,修改后代码:
// 优先读取本地存储的历史值,不存在则初始化为10 let balls = localStorage.getItem('balls') ? Number(localStorage.getItem('balls')) : 10; let randomB = Math.floor(Math.random() * 10) + 1; if (randomB % 2 == 0) { balls++; } else { balls -= 2; } // 将更新后的值写入本地存储 localStorage.setItem('balls', balls); console.log(balls);
- 如需重置为初始值10,手动执行
localStorage.removeItem('balls')删除存储记录即可。
Node.js环境方案
通过读写本地文件实现数值持久化,修改后代码:
const fs = require('fs'); // 自定义存储文件的路径 const STORAGE_FILE = './balls_data.json'; let balls = 10; // 读取已有存储的历史值 if (fs.existsSync(STORAGE_FILE)) { const savedData = JSON.parse(fs.readFileSync(STORAGE_FILE, 'utf-8')); balls = savedData.balls; } let randomB = Math.floor(Math.random() * 10) + 1; if (randomB % 2 == 0) { balls++; } else { balls -= 2; } // 将更新后的值写入存储文件 fs.writeFileSync(STORAGE_FILE, JSON.stringify({ balls })); console.log(balls);
- 脚本运行后会在当前目录生成
balls_data.json文件存储最新值,删除该文件即可重置初始值。
内容的提问来源于stack exchange,提问作者Mihai Pascu
相关产品推荐
相关产品推荐

