Есть ли разница между var a = что-то и window.a = someting? - PullRequest
0 голосов
/ 04 октября 2018

Я новичок в мире JavaScript и запутался после того, как много узнал о глобальном объекте (обычно в окне) и знал, что это просто объект, похожий на любой объект, который я бы создал, и что var устанавливает свойства в глобальном объекте в отличие от let

после этого Есть ли разница между window.a = что-то ( как в любом объекте ) и varа = что-то?

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Нет, за исключением Node.js, где a = 5 или var a = 5 (вместе с let и const) не будут присваивать значение global.a.Вы должны явно сказать global.a = 5.

0 голосов
/ 04 октября 2018

В глобальном контексте использование var против присвоения window действительно очень похоже.Однако да существует ряд различий.Вот некоторые из них, о которых я могу подумать:


  • var объявления hoisted , что означает, что вы можете использовать переменную, объявленную с var перед вами 'мы объявили это.С другой стороны, попытка использовать что-то, назначенное для window до того, как это назначение произойдет, приведет к ReferenceError:

// This is okay. The variable declaration is hoisted, so you can use it before
// it's been declared (although it won't be assigned its value until later).
console.log(a);
var a = "hello world";

// On the other hand, without var, this creates an error.
console.log(a);
window.a = "hello world";

  • Переменные, объявленные с var, нельзя удалить из глобального объекта, но можно удалить простые присвоения window:

var a = "hello world";

console.log(a);
delete window.a; // Does nothing for `var`.
console.log(a);

window.a = "hello world";

console.log(a);
delete window.a; // This will delete it, further access creates a ReferenceError.
console.log(a);

  • И, конечно же, объявления var ограничены текущим контекстом выполнения.В глобальной области это не отличается от присвоения window, но внутри функции var исчезнет, ​​когда функция вернется.

function foo() {
  var a = "hello world";
  console.log(a);
}

foo();
console.log(a); // ReferenceError

function foo() {
  window.a = "hello world";
  console.log(a);
}

foo();
console.log(a); // still exists here

0 голосов
/ 04 октября 2018

Вы используете window.a =, если хотите, чтобы переменная a global.Это означает, что любой код JS имеет доступ к этой переменной.В то время как var a = является широко используемым способом объявления переменной.В этом случае переменная доступна только внутри своего контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...