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

问题描述 投票:0回答:1

朋友们!

任何人都可以告诉我,为什么我的函数在输出字符串的末尾给我一个额外的值“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!

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

javascript function loops
1个回答
1
投票

因为以下行:

console.log( buffer() ); 

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

如有必要,您可以更改缓冲区功能:

return function buffer(value) {
    return typeof value === "undefined" ?  bufferStin : butterStin += String(value);
};
© www.soinside.com 2019 - 2024. All rights reserved.