2014-03-26 112 views
0

我對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/

請讓我知道我要去哪裏錯了?

+0

定義你的函數然後使用它,[這裏] [1]是一個很好的解釋。 [1]:http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname –

回答

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."); 

這樣的對象 「人」 都知道FNAME是什麼。當代碼第一次執行時,你也不需要你的函數來調用它自己。像上面的代碼一樣格式化你的函數。

3

在爲其分配值之前,您正嘗試使用fnName。在person=前行移動var fnName =線,像這樣:

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

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

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

尾隨括號讓你的函數會立即調用自身,但是這是您已經創建了person對象之後 - 在其創建的時間,fName是未定義,因此你的錯誤。切換順序。

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

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

首先你正在使用的功能參數,所以它應該是

var fnName = function(){return 'john'}; ,你也應該瞭解JavaScript是person.fname會如此不確定的執行模式insted的定義你的目標下面的功能定義在定義該函數後不要立即調用函數,因爲您需要獲取值不是fnname而不是僅在其中調用。

也是對象也不應該是那樣的,如果你這樣做,然後它會拋出一個異常,所以要定義一個對象,你定義它定義格式

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

    }; 

記住,當你在最後屬性,然後不使用逗號,如你在上面的例子中看到的。對象也可以有一個值作爲一個函數。

在你的對象 person的第一個屬性

insted的的定義函數fnName seprately你也可以寫爲

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

另一intresting的是,窗口也是一個對象,你也可以定義一個對象像這window["person"] ={fanme:FnName, age:50}等等。

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.");