You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome Storage API的get与set函数疑问:未设置v2为何返回s1?

分析你的Chrome Storage异常问题

首先得说,你遇到的情况确实不符合Chrome原生chrome.storage API的正常行为——按道理,你没设置过v2,调用get('v2')时回调里的result.v2应该是undefined,而不是s1。咱们一步步排查可能的原因:

  • 先检查代码笔误:
    你有没有可能在第二个get的回调里不小心写成了result.v1?比如:

    storage.get('v2',function(result){
      console.log(v2, result.v1); // 这里写成v1的话,就会输出l2 s1
    });
    

    如果是这个问题,修正成result.v2就好了。另外也确认下storage.set的参数是不是真的只有{v1:'s1'},有没有手滑把v2也加进去了。

  • 检查Chrome存储的持久化数据:
    Chrome的localStorage或syncStorage是持久化的,如果你之前测试时不小心设置过v2:s1,这个值会一直存在,直到你主动删除。你可以打开Chrome开发者工具,切换到Application面板,找到Storage下的Local Storage(或Sync Storage,取决于你用的是chrome.storage.local还是sync),看看里面有没有v2这个键。如果有,删掉它再重新跑代码试试。

  • 确认你用的是原生Chrome Storage API:
    如果你是自己封装了一个叫storage的对象,那可能封装逻辑有bug——比如当请求的键不存在时,错误地返回了最后一次设置的值。这种情况下,你需要检查封装的get方法逻辑,看看是不是哪里处理错了。

另外顺便提个小细节:你代码里的storage.set({v1:'s1'}),这里的v1是字符串键名,不是变量v1的值l1。如果想把变量的值作为键名,得用ES6的计算属性名:storage.set({[v1]:'s1'}),不过这和你当前的问题无关,只是个小提醒。

内容的提问来源于stack exchange,提问作者Farhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:11:41