[英]Why I am getting age[i] as undefined?
在這里,我將描述我的問題,即為什么我在控制台時將age[i]=a
為 undefined
const birthYear = [1996, 1997, 1998, 1999] function calc(Year) { age = 2022 - Year; return age } var age = [] age[0] = 123; console.log(age[0]) for (i = 0; i <= birthYear.length - 1; i++) { var a = calc(birthYear[i]) /* if you want to return the value of any function you have to address it the help of any agruement otherwise it will show you a function body */ age[i] = a // console.log console.log(age[i]) } // console.log(age[])
問題是您使用 calc 返回“age”並且還稱您的數組為“age”。 因此,數組每次都會被替換,並且您會變得“未定義”。
嘗試這個:
const birthYear=[1996,1997,1998,1999]
function calc(Year) {
age=2022-Year;
return age
}
var ageArr = [];
for(var i = 0 ; i < birthYear.length ; i++){
ageArr[i] = calc(birthYear[i])
console.log(ageArr[i]);
}
為什么我的 age[i] 未定義?
您已經使用 var 關鍵字來聲明年齡數組,現在年齡成為全局變量,因此當您調用 calC function 時,它將數組轉換為數字age=2022-Year;
執行此語句后。 這就是 age[i] 未定義的原因。 現在正確的方法是什么,只需在 calc function 中聲明 ageCount 並返回它,就像這樣
const birthYear=[1996,1997,1998,1999]
function calc(Year)
{
//instead of using 2022, you fetch current year from date object
let ageCount=2022-Year;
return ageCateCount
}
var age=[]
age[0]=123;
console.log(age[0])
for(i=0;i<=birthYear.length-1;i++){
age[i]=calc(birthYear[i]);
// console.log
console.log(age[i])
}
const birthYear = [1996, 1997, 1998, 1999] function calc(Year) { let ageCount = new Date().getFullYear() - Year; return ageCount } var age = [] age[0] = 123; console.log(age[0]) for (i = 0; i <= birthYear.length - 1; i++) { var a = calc(birthYear[i]) /* if you want to return the value of any function you have to address it the help of any agruement otherwise it will show you a function body */ age[i] = a // console.log console.log(age[i]) }
希望這會有所幫助!
如果我對要求的理解正確,你想找出 2022 年與birthYear
數組中年份的差異。 如果是,您可以使用一行代碼簡單地實現這一點,而不是讓它變得復雜。
演示:
const birthYear = [1996, 1997, 1998, 1999]; const age = birthYear.map(year => 2022 - year); console.log(age);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.