【问题标题】:Getting strange "undefined" value on the output of Closure function在 Closure 函数的输出中获取奇怪的“未定义”值
【发布时间】:2017-12-17 19:49:43
【问题描述】:

朋友们!

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

我认为,可能是我对闭门器功能不太清楚的认识有误。 ^)

在此先感谢大家。

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】:

    因为下面一行:

    console.log( buffer() ); 
    

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

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

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

    【讨论】:

    • 非常感谢!我们也可以选择条件 if (arguments.length == 0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多