控制台期间未完成的结果

时间:2018-08-28 06:51:54

标签: javascript

在下面的JS代码中,我为单个控制台获得2个答案,第一个是预期的答案,另一个是undefined

我不明白为什么获得第二名undefined,谁能告诉我原因。

function sayHello2(name) {
    var text = 'Hello ' + name;
    var say = function() {
        console.log(text);
    }
    return say;
}
var say2 = new sayHello2('Bob');
console.log(say2());

3 个答案:

答案 0 :(得分:1)

您没有从内部函数返回任何内容。如果没有从函数中取消任何内容,则返回默认undefined。您必须从内部函数返回text

return text;

function sayHello2(name) {
  var text = 'Hello ' + name;
  var say = function() 
  { 
    console.log(text); 
    return text;
  }
  return say;
}
var say2 = new sayHello2('Bob');
console.log(say2());

答案 1 :(得分:0)

console.log(say2());记录say2的结果。

由于say2不返回任何内容,因此结果为undefined

如果您想从say2返回任何内容,则可能要写:

var say = function() 
{ 
  console.log(text);
  return text
}

但尚不清楚为什么在这种情况下完全使用new

function sayHello2(name) {
  var text = 'Hello ' + name;
  var say = function() {
    console.log(text);
    return text
  }
  return say;
}

var say2 = sayHello2('Bob');
console.log(say2());

答案 2 :(得分:-1)

say2()返回一个函数。它还应该返回一些数据。