当我从函数显式返回而隐式返回时是否有任何区别?
这是困扰我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'和''')对我来说都是一样的,我想知道是否只有个人喜欢写过我到目前为止读过的任何文章,或者是否有任何隐藏的陷阱
答案 0 :(得分:6)
当您使用new
时,会出现隐含值。当您不使用new
时,就没有了。
当使用new
调用的函数返回一个对象时,那就是new
表达式的值。当它返回其他内容时,忽略该返回值,隐式构造的对象是表达式的值。
所以,是,可能会有所不同。
答案 1 :(得分:0)
隐式返回仅发生在单个语句箭头函数中,除非使用{}声明箭头函数,即使它是单个语句,也不会发生隐式返回: link