我不知道';我不懂这个Javascript?

我不知道';我不懂这个Javascript?,javascript,Javascript,有人能带我看一下这个例子吗?为什么它打印10个?我认为我在功能方面对功能感到困惑。还有var x=和x=之间的区别是什么 var x = 6; var y = 4; var a = function(b) { return function(c) { return y + b + c; } }; x = 2; y = 5; var fn = a(x); x = 1; y = 3; var unknown = 5; console.log(fn(unknown)); var x=

有人能带我看一下这个例子吗?为什么它打印10个?我认为我在功能方面对功能感到困惑。还有
var x=
x=
之间的区别是什么

var x = 6;
var y = 4;
var a = function(b) {
  return function(c) {
    return y + b + c;
  }
};
x = 2;
y = 5;
var fn = a(x);
x = 1;
y = 3;
var unknown = 5;
console.log(fn(unknown));

var x=
用于将x声明为变量,而
x=
用于更改其值“var”不会被第二次使用,因为之前x已经声明为变量。这是一个关于JavaScript的基本示例。您学习编程多长时间了?从哪里获得此代码?是你写的,是从书上写的吗?如果它来自一本书,那就不是很好的代码。我建议在开始编写返回函数的函数之前进行更多的练习。或者尝试将代码分解成更小的片段。在一张纸上,写出你认为代码在做什么。@VũKhanh,如果它这么简单,你可以解释它。我看到很多人在javascript方面都很难做到正确。
var x
是变量x被声明和初始化的地方,
x=
是值或x被更改或更新的地方。用于混淆的位确实做得很好。现在我知道这叫做闭包,我想我对这个例子理解得更好一些
var x = 6; 
var y = 4; 
var a = function(b) {
    return function(c) {
        return y + b + c;
    }
};
x = 2; 
y = 5; // unnecessary, meant to confuse
var fn = a(x); // creates a closure, where b equals 2
x = 1; // unnecessary, meant to confuse
y = 3; 
var unknown = 5;
console.log(fn(unknown)); // y=3,b=2,c=5, total = 10