为什么构造函数会为此代码返回预设/初始值?

我正在调用值为5的setGear(),但getGear()返回1而不是5。

可以通过将setGear()函数中的参数名称更改为'gear'以外的任何名称来解决此问题。

var Bike = function() {
     var gear = 1;

     this.getGear = function() {
         return gear;
     };

     this.setGear = function(gear) {
         gear = gear;
     };
 };

 ////////
 var myBike = new Bike();
 myBike.setGear(5);
 result = myBike.getGear();

最佳答案

这是因为您在set Gear方法中使用了相同的变量名gear。
当您调用函数setGear(gear)时,gear将采用Bike函数中定义的局部变量gear的值。

将变量名称更改为其他名称,例如输入



var Bike = function() {
     var gear = 1;

     this.getGear = function() {
         return gear;
     };

     this.setGear = function(input) {
         gear = input;
     };
 };

 ////////
 var myBike = new Bike();
 myBike.setGear(5);
 result = myBike.getGear();

console.log(result);

10-05 23:17