在Closure函数的输出上获得奇怪的“未定义”值

时间:2017-12-17 19:49:43

标签: javascript function loops

友!

任何人都可以告诉我,为什么下面的函数在输出字符串的末尾给我一个额外的值“undefined”。

我想,可能是因为关于闭门器功能的不太明确的知识错误。 ^)

提前感谢所有人。

function makeBuffer() {
    var butterStin = ''; //local variable for storage buffer data

    return function buffer(value) {
        return butterStin += String(value);
    };

}

var buffer = makeBuffer();

buffer('Closures');
buffer(' Must');
buffer(' Use!');

console.log( buffer() ); // Closures Must Use!

输出的当前结果:“闭包必须使用!未定义”

1 个答案:

答案 0 :(得分:1)

因为以下行:

console.log( buffer() ); 

在没有参数的情况下调用缓冲区函数,因此value未定义。

如果需要,您可以更改缓冲区功能:

return function buffer(value) {
    return typeof value === "undefined" ?  bufferStin : butterStin += String(value);
};