javascript - 内存模式中的 "this.data = this.data || {}"是什么意思?

标签 javascript memoization

我是一名学习javascript的学生,在学习memoization模式时遇到了一个问题。这是代码:

Function.prototype.memoization = function(key) {
   var arg = Array.prorotype.slice.call( arguments, 1 );
   this.data = this.data || {} ;    //THE code

   return this.data[key] !== undefined ?
       this.data[key] : this.data[key] = this.apply(this, arg);
};

对我来说,它只是一个数组和一个空白数组之间的OR操作,我不明白为什么需要这样的代码。

最佳答案

JavaScript 中的 || 运算符也可用于条件评估,因为它“短路”。如果运算符左侧的计算结果为真,则无需检查右侧。

解释器计算运算符的左侧,如果计算结果不同于 false 或 null,则返回结果,否则计算并返回右侧。

let x = 1 || 2;
// Prints 1
print(x);

let y = null || 3;
// Prints 3
print(y);

在您的示例中:如果 this.data 中有内容,则相同的信息将存储在 this.data 中,否则分配一个空对象。

关于javascript - 内存模式中的 "this.data = this.data || {}"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58333984/

相关文章:

javascript - 悬停的元素宽度会扩展,以便它可以容纳其中的所有内容

ruby-on-rails - 如何缓存对象为多个请求存储它们?

Javascript 阶乘函数内存

reactjs - 我应该记住自定义 React 钩子(Hook)的返回对象吗?

javascript - 如何使我的 JavaScript 代码更加动态和可扩展

javascript - 主干验证自定义函数的主干模型范围问题

javascript - ChartJS 矢量 map

php - 在页面加载时从一个页面转发到另一个页面时在网页中显示警报消息

javascript - lodash 中如何删除整个 memoize 缓存?

c++ - 为什么内存比制表花费更多时间?