javascript - 为什么下面的 javascript 函数不起作用?

标签 javascript

我知道这是一个非常愚蠢的问题,但不知道为什么这不起作用:

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

关于javascript - 为什么下面的 javascript 函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18649107/

相关文章:

javascript - 如何 move HTML 元素

javascript - 有没有办法在不同的滚动点改变不同的图像?

c# - AJAX仅适用于页面刷新

javascript - js - 在空格键上按文档上的任意位置触发通用功能

Javascript for 循环应该循环两次,为什么只循环一次?

javascript - 路由中的 Ember setupController Hook 断开模型与模板的连接

javascript - 为什么提交到Spring Controller 后java无法识别html文本?

javascript - 使用 javascript 打印时不出现 Ajax 评级控件

javascript - 为什么 npm init 实际上会初始化一个 grunt 项目?

javascript - 如何将 ng-repeat 与 <tr> 标签一起使用?