javascript函数中显式和隐式返回之间的任何区别?

时间:2014-01-09 23:43:09

标签: javascript function return

当我从函数显式返回而隐式返回时是否有任何区别?

这是困扰我ATM的代码:

function ReturnConstructor(arg){
    // Private variable. 
    var privateVar = "can't touch this, return ctor.";

    // This is what is being exposed to the outside as the return object
    return {
        print: function() {
            console.log("ReturnConstructor: arg was: %s", arg);
        }
    };
}

function NormalConstructor(arg){
    // Private variable. 
    var privateVar = "can't touch this, normal ctor";

    // This is what is being exposed to the outside as "public"
    this.print = function() {
            console.log("NormalConstructor: arg was: %s", arg);
        };
}

var ret = new ReturnConstructor("calling return");
var nor = new NormalConstructor("calling normal");

两个对象('ret'和''')对我来说都是一样的,我想知道是否只有个人喜欢写过我到目前为止读过的任何文章,或者是否有任何隐藏的陷阱

2 个答案:

答案 0 :(得分:6)

当您使用new时,会出现隐含值。当您使用new时,就没有了。

当使用new调用的函数返回一个对象时,那就是new表达式的值。当它返回其他内容时,忽略该返回值,隐式构造的对象是表达式的值。

所以,,可能会有所不同。

答案 1 :(得分:0)

隐式返回仅发生在单个语句箭头函数中,除非使用{}声明箭头函数,即使它是单个语句,也不会发生隐式返回: link