“未定义”作为数组的输出

时间:2019-05-01 22:26:04

标签: javascript arrays

我是Javascript的新手,语法使我很烦。每个函数声明输出后,输出都会给我未定义的警报。

let func=[
    {
        sayHi:function(){
            alert('hello');
        },
        saybi:function(){
            alert('Bye');
        }
    },
    {
        sayName:function(name){
            alert('Hii !! ', +name);
        },
        askName:function(){
            alert("What's your name ??");
        }
    }
];

alert(func[0].sayHi());

let name=prompt("What's your name ?","");
if(name!="")
{
    alert(func[1].sayName(name));
}
else{
    alert(func[1].askName());
}

3 个答案:

答案 0 :(得分:2)

func数组中的

函数调用alert函数。但是,在调用了alert之类的函数之后,您再次调用了alert(func[0].sayHi())

您应调用以下函数:

let func = [{
    sayHi: function() {
      alert('hello');
    },
    saybi: function() {
      alert('Bye');
    }
  },
  {
    sayName: function(name) {
      alert('Hii !! ' + name);
    },
    askName: function() {
      alert("What's your name ??");
    }
  }
];

func[0].sayHi();

let name = prompt("What's your name ?", "");
if (name != "") {
  func[1].sayName(name);
} else {
  func[1].askName();
}

更新:我已修复sayName功能以使其正常工作。

答案 1 :(得分:2)

您不需要将每个函数调用都用alert()包装,因为这些函数返回未定义的值并会使您感到困惑。另外alert()接受一个参数,所以那里的逗号(',')没有帮助。

尝试一下:

let func = [
    {
      sayHi: function(){
        alert('hello');
      },
      saybi: function(){
        alert('Bye');
      },
    },{
      sayName: function(name) {
        alert('Hi !! ' + name);
      },
      askName: function() {
        alert("What's your name ??");
      },
    }];

func[0].sayHi();

let name = prompt("What's your name ?", "");
if (name != "") {
    func[1].sayName(name);
} else {
    func[1].askName();
}

答案 2 :(得分:0)

效果很好。 sayHi()不返回任何内容,因此返回undefined。这就是您在最后一行中要提醒的内容。