javascript变量未正确分配

时间:2014-03-26 04:57:39

标签: javascript

我是javascript的新手,最近开始学习。我无法将变量分配给正确的值。以下是代码:

person={
firstname: fnName,
lastname:"Doe",
age:50,
eyecolor:"blue"
}

var fnName=(function(){
    return 'John';
})();

console.log(person.firstname + " is " + person.age + " years old.");

输出应该是约翰50岁。 jsfiddle链接是http://jsfiddle.net/prashdeep/Fj6Xf/

请告诉我哪里出错了?

5 个答案:

答案 0 :(得分:3)

在为其分配值之前,您尝试使用fnName。将var fnName =行移至person=行之前,如下所示:

var fnName=(function(){
    return 'John';
})();

person={
    firstname: fnName,
    lastname:"Doe",
    age:50,
    eyecolor:"blue"
}

console.log(person.firstname + " is " + person.age + " years old.");

答案 1 :(得分:2)

尾随括号使您的函数立即调用,但是在您创建person对象之后 - 在创建时,fName未定义,因此您的错误。切换订单。

var fnName=(function(){
  return 'John';
})();

  person={
  firstname: fnName,
  lastname:"Doe",
  age:50,
  eyecolor:"blue"
}

答案 2 :(得分:2)

尝试:

var fnName = function() {
    return 'John';
}

var person = {
    firstname: fnName,
    lastname: "Doe",
    age: 50,
    eyecolor: "blue"
}

console.log(person.firstname + " is " + person.age + " years old.");

这样的对象" person"会知道fName是什么。在首次执行代码时,您也不需要自己的函数来调用自身。像上面的代码一样格式化你的函数。

答案 3 :(得分:2)

您可以在我们可以通过对象调用方法之后编写一个类。像这样

function person() {
this.firstname = fnName;
this.lastname = "Doe";
this.age = 50;
this.eyecolor = "blue";
}

var fnName = (function () {
    return 'John';
})();

var obj = new person();

console.log(obj.firstname + " is " + obj.age + " years old.");

答案 4 :(得分:1)

首先你使用函数作为参数,所以它应该是

var fnName = function(){return 'john'}; 并且您还应该知道javascript的执行模式是person.fname将是未定义的,因此在定义该对象定义该函数之后不要立即调用函数,因为您需要获取值不是fnname不要只在那里调用。

此外,对象也不应该像你定义的那样被定义,如果这样做,那么它会抛出一个异常,以便定义它格式化的对象

    var objectname = {
      propertyname : propertyvalue,
      propertyname : propertyvalue,
      propertyname : {
        anotherpropertname : anotherpropertyvalue,
        anotherpropertname : anotherpropertyvalue
  }

    };

请记住,当您在最后一个属性上时,请不要使用逗号,如上例所示。 object也可以将值作为函数。

在你的对象的第一个属性person中定义一个函数fnName,你也可以写成

var person = {
  firstname : function(){return 'john'}
};

另一个有趣的事情是窗口也是一个对象,你也可以定义像这样的window["person"] ={fanme:FnName, age:50}等对象..