如何实现:若localStorage存在wallSize则赋值给bathroomLength,否则保持原值?
解决方案
这里有几种实用的写法可以实现你的需求,我会逐个拆解说明:
写法一:直观的条件判断(新手友好)
这是最容易理解的方式,直接检查localStorage里是否存在目标键:
var bathroomLength = 'initial'; // 检查wallSize是否存在且不为空值 if (localStorage.getItem('wallSize')) { bathroomLength = localStorage.getItem('wallSize'); }
解释:localStorage.getItem()找不到对应键时会返回null,而null在条件判断中属于假值,所以只有当wallSize存在且值为有效内容时,才会覆盖bathroomLength的初始值。
写法二:逻辑或运算符(一行简洁版)
利用JS的逻辑或特性,用一行代码搞定赋值:
var bathroomLength = localStorage.getItem('wallSize') || 'initial';
解释:逻辑或||会返回第一个「真值」。如果localStorage里的wallSize是有效内容(非空字符串、非null等),就用这个值;否则直接用默认的'initial'。
⚠️ 注意:如果你的业务场景中wallSize可能出现空字符串""、数字0这类「假值」,这种写法会把它们当成「不存在」,直接使用默认值。如果需要保留这类值,建议用第一种写法。
写法三:空值合并运算符(ES2020+ 严谨版)
如果你的项目环境支持ES2020及以上语法,可以用更精准的空值合并运算符??:
var bathroomLength = localStorage.getItem('wallSize') ?? 'initial';
解释:和逻辑或不同,??只会在左侧是null或undefined时才返回右侧值。哪怕wallSize的值是空字符串""或者数字0,只要它存在(不是null/undefined),就会被赋值给bathroomLength,在需要保留特殊假值的场景下更靠谱。
内容的提问来源于stack exchange,提问作者RyeGuy
相关产品推荐
相关产品推荐

