Подтвердить что ты не робот

'var' vs 'this' против переменных-параметров конструктора

В javascript приведены три функции-конструктора:

function Foo(data) {

  var _data = data;

}

function Bar(data) {

  this.data = data;

}

function Baz(data) {

   //just use data freely.

}

Есть ли какая-либо разница, кроме видимости члена data после построения? (например, вы можете сделать новый Bar().data, но не new Foo().data)

4b9b3361

Ответ 2

Да, разница в том, как хранится переменная.

Переменная, объявленная с помощью var, является локальной функцией конструктора. Он будет выходить за пределы вызова конструктора, если в области есть какая-либо функция, поскольку она затем фиксируется при закрытии функций.

Переменная, объявленная с помощью this., на самом деле не является переменной, а является свойством объекта, и она будет существовать до тех пор, пока объект выполняет, независимо от того, используется она или нет.

Edit:
Если вы используете переменные без их объявления, они будут объявлены неявно в глобальной области действия, а не в части объекта. Как правило, вы должны попытаться ограничить область своего объявления, чтобы не все попадало в глобальную область.