错误:不是函数。我该如何解决?

时间:2015-07-17 11:10:16

标签: javascript function

这是我的升降机程序。但我有错误。

var person = {
  name: "Roman",
  position: 2,
  goal: 9
};

var lift = {
  getPosition : function() {
  var x = Math.floor((Math.random() * 10) + 1);
  return x; 
} ()};

console.log("Ok " + person.name + "! You are at " + person.position + " floor");
console.log("Lift is at " + lift.getPosition() + " floor");
  

错误lift.getPosition不是函数。

我该如何解决?

2 个答案:

答案 0 :(得分:4)

你的代码看起来很糟糕:

var lift = {
  getPosition : function() {
  var x = Math.floor((Math.random() * 10) + 1);
  return x; 
} ()};

似乎这应该是

var lift = {
  getPosition : function() {
    var x = Math.floor((Math.random() * 10) + 1);
    return x; 
  } 
};

答案 1 :(得分:1)

当您声明getPosition时,您为此属性分配了一个自调用的匿名函数。 (最后(),自我调用它)

var lift = {
  getPosition: function() {
      var x = Math.floor((Math.random() * 10) + 1);
        return x; 
  }()
};

您可以删除它们()并像调用“lift.getPosition()”一样调用该方法:

var lift = {
    getPosition: function() {
        var x = Math.floor((Math.random() * 10) + 1);
        return x; 
    }
};

console.log("Lift is at " + lift.getPosition() + " floor");

或离开他们,只是在没有()lift.getPosition”的情况下调用该媒体资源:

var lift = {
    getPosition: function() {
        var x = Math.floor((Math.random() * 10) + 1);
        return x; 
    }()
};

console.log("Lift is at " + lift.getPosition + " floor");

但是每次使用它都会返回相同的值,因为它只执行一次。这实际上取决于你想要完成的事情。