[英]why below javascript function does not work?
我知道這是一個非常愚蠢的問題,但不知道為什么這不起作用:
this.getPageName = function(pagenum){
var name;
if(pagenum==1){
this.name='1.page1';
}
else if(pagenum==2){
this.name='2.page2';
}
else if(pagenum==3){
this.name='3.page3';
}
else if(pagenum==4){
this.name='4.page4';
}
console.log("pagenum: " + pagenum);
console.log("tabname: " + name);
return name;
}
var page=3;
var pagename=getPageName(page);
console.log(pagename);
我想console.log(pagename);
會有3.page3
,但輸出是undefined
。
哪里不對了? 那里肯定有一些范圍錯誤。
擺脫函數內部的this.name
。 它不是引用函數,而是引用window
對象; 也就是說, this.name
不是函數內的變量name
。
this.getPageName = function(pagenum){
var name;
if(pagenum==1){
name='1.page1';
}
else if(pagenum==2){
name='2.page2';
}
else if(pagenum==3){
name='3.page3';
}
else if(pagenum==4){
name='4.page4';
}
console.log("pagenum: " + pagenum);
console.log("tabname: " + name);
return name;
}
var page=3;
var pagename=getPageName(page);
console.log(pagename);
您無需添加關鍵字this
。 您在與函數其余部分相同的范圍內定義了name
。 那應該解決這個問題。
this
都搞砸了你。 具體來說,你定義的功能this.getPageName
,然后試圖調用函數getPageName
,你還沒有定義-您定義this.getPageName
。 即使代碼確實以這種方式運行,也沒有必要。 如果函數內的console.log
沒有執行,那么該函數根本不運行。
然后,在函數內部,只有name
才會引用this.name
。 刪除的每個實例this
從您的代碼,它應該工作。
您還可以通過將代碼更改為此來收緊功能:
getPageName = function(pagenum) {
// Start with '' to make sure it interprets pagenum as a string, not a digit
var name = '' + pagenum + '.page' + pagenum;
console.log("pagenum: " + pagenum);
console.log("tabname: " + name);
return name;
}
var page=3;
var pagename=getPageName(page);
console.log(pagename);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.