在下面的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());
答案 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()返回一个函数。它还应该返回一些数据。