поведение let и const с ключевым словом javascript this - PullRequest
0 голосов
/ 04 декабря 2018
var num = 8;

const wantToKnowThis = function(val) {
  var num = 6;
  return this.num
}
console.log(wantToKnowThis(3));

если я выполню этот код, ответ будет 8, и это правильно, но если запустить этот код, просто заменив let или const, он даст неопределенное значение !!

let num = 8;

const wantToKnowThis = function(val) {
  var num = 6;
  return this.num
}
console.log(wantToKnowThis(3));

let иconst ведет себя иначе с этим ключевым словом, чем var, пожалуйста, дайте мне знать ??

1 Ответ

0 голосов
/ 04 декабря 2018

Если вы используете 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));
...