Safari中performance.memory.jsHeapSizeLimit获取失败的解决方法求助
解决方案:Safari中获取performance.memory属性的兼容处理
你的代码在Safari中报错的原因是:performance.memory在Safari里本身就是undefined,直接访问undefined对象的jsHeapSizeLimit属性会触发"undefined is not an object"的错误,而非返回undefined。
修复方案1:逐层判断(兼容所有浏览器)
通过依次检查对象是否存在,避免访问不存在的属性:
(function () { var MAXmemoryAvailable = 0; // 依次检查performance、performance.memory是否存在,再读取目标属性 if (typeof performance !== 'undefined' && performance.memory && typeof performance.memory.jsHeapSizeLimit !== 'undefined') { MAXmemoryAvailable = performance.memory.jsHeapSizeLimit; } })();
修复方案2:使用可选链+空值合并(现代浏览器兼容)
如果你的项目不需要兼容Safari 14以下的版本,可以用ES2020引入的语法简化代码:
(function () { const MAXmemoryAvailable = performance?.memory?.jsHeapSizeLimit ?? 0; })();
?.(可选链操作符):链上任意属性不存在时,表达式直接返回undefined,不会报错??(空值合并操作符):当左边的值为undefined或null时,返回右边的默认值0
内容的提问来源于stack exchange,提问作者Andrea De Donatis
相关产品推荐
相关产品推荐

