Если вы используете var
в глобальной области, то он неявно создаст свойство с тем же именем для объекта window
.
То же самое не верно для const
или let
.
Это на самом деле не имеет ничего общего с this
, за исключением нескольких удаленных шагов.
Если вы используете this
, это функция безконтекст (то есть, который не является методом объекта и не имеет связанного контекста через bind
или =>
), тогда this
будет window
(если вы не используете "use strict"
, и вы всегда должны использовать"use strict"
, поскольку он предотвращает все виды ошибок)
Если вы хотите получить доступ к переменной вне функции, в которой вы находитесь, не прибегайте к махинациям с глобальными переменными.Просто не присваивайте локальной переменной одноименное имя .
let num = 8;
const wantToKnowThis = function(val) {
let local_num = 6;
return num;
}
console.log(wantToKnowThis(3));