Есть ли какая-то разница, когда я явно возвращаюсь из функции против неявного возврата?Любая разница между явным и неявным возвратом в функции javascript?
Вот код, который озадачивает мне банкомат:
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» & «ни») кажутся мне то же самое, и мне интересно, если это только личные предпочтения, кого писал зависимости от того, статью, которую я прочитал до сих пор, или там есть какие-то скрытые ловушки.
Таким образом, с помощью 'уаг V = new ... 'в моем вопросе, они одинаковы. Разница вступила в игру, когда я делаю что-то вроде: «ReturnConstructor (« hello »). Print()', который является допустимым и будет печатать: 'ReturnConstructor: arg was: hello', потому что он возвращает объект, который имеет' print ', в отличие от' NormalConstructor («hello») ', который возвращает' undefined', и будет вызывать ошибку, если я попытаюсь использовать метод print() для неопределенного объекта. (Я все еще не уверен, кто будет использовать его таким образом, хотя ... какие-нибудь примеры?) – Noctis
Право - оператор 'new' сильно влияет на семантику вызова функции. Без 'new' обычный вызов функции для функции без явного возвращаемого значения приводит к' undefined'. – Pointy