返回

超越Dan的变量处理方式:巧用思维模型,重构逻辑!

前端

在阅读Dan(React核心开发、Redux作者)的博文中,当我们看到以下这段JavaScript代码时,可能会感到疑惑:

let name = "Dan";
name = "Abramov";

你可能会想:“这段代码比我每天编写的代码简单得多。重点是什么?”

确实,这段代码的目的并不是要介绍变量,而是让你注意到并反思你的心理模型。

心理模型是人们对周围世界所持有的假设和期望。它指导着我们如何感知、理解和解释信息。在编程中,心理模型也发挥着重要作用。它影响着我们如何设计和编写代码。

Dan的这段代码,正是为了让你思考你的心理模型。

如果你熟悉JavaScript,那么你可能已经形成了一种关于变量的心理模型。你可能认为变量是用来存储数据的容器。变量的值可以改变,但变量的名称不能改变。

这就是Dan的这段代码所要挑战的。

在Dan的代码中,变量name的值被改变了,但变量的名称并没有改变。这违反了我们通常的思维模型。

这正是Dan想要达到的目的。他希望我们能够意识到,我们的思维模型并不是一成不变的。它们是可以被挑战和改变的。

思维模型的改变,可以带来代码逻辑的重构。

在Dan的这段代码中,变量name的值被改变了,这并不是因为name的值发生了变化,而是因为name指向了一个新的对象。

在JavaScript中,变量存储的并不是数据本身,而是数据的引用。这意味着,变量的值可以通过改变引用来改变。

这种思维模型的改变,可以让我们重构代码逻辑。例如,我们可以将以下代码:

let name = "Dan";
let age = 30;

if (name === "Dan" && age === 30) {
  console.log("Hello, Dan!");
}

重构为:

let person = {
  name: "Dan",
  age: 30
};

if (person.name === "Dan" && person.age === 30) {
  console.log("Hello, Dan!");
}

这种重构的好处在于,它使代码更加灵活和可维护。例如,如果我们想要将name的值改为"David",我们只需要修改person对象中的name属性即可。

而如果我们使用的是第一种写法,我们就需要修改两个变量的值。

思维模型的改变,可以带来代码逻辑的重构,从而使代码更加灵活和可维护。

Dan的这段代码,正是为了启发我们思考思维模型的重要性。它告诉我们,我们的思维模型并不是一成不变的。它们是可以被挑战和改变的。思维模型的改变,可以带来代码逻辑的重构,从而使代码更加灵活和可维护。