Если функция назначена переменной, объявленной с использованием var, и пусть какая разница? - PullRequest
0 голосов
/ 25 июня 2018

когда я запускаю код ниже, это дает мне ошибку

var name = function print(){
console.log("welcome ......");
};
name();


js.js:5 Uncaught TypeError: name is not a function
at js.js:5

но когда я изменяю ключевое слово var, чтобы оно работало нормально Кто-нибудь может объяснить это, пожалуйста

let name = function print(){
console.log("welcome ......");
};
name();

1 Ответ

0 голосов
/ 25 июня 2018

name - это предопределенное свойство во время выполнения JavaScript, которое set или get является именем окна.Таким образом, вы не можете использовать это зарезервированное свойство как функцию при использовании var.

Причиной этого является let, позволяющий объявлять переменные, ограниченные по области действия блоком, оператором или выражением, в котором он используется.Это не похоже на ключевое слово var, которое определяет переменную глобально или локально для всей функции независимо от области видимости блока.Таким образом, когда var пытается определить name как переменную, в этом случае globally конфликтует с существующим свойством name, поэтому вы получаете эту ошибку при использовании var, но не с let.

//get name  value
console.log(name);
//set name value
name = 'someNewName';
console.log(name);

Таким образом, чтобы запустить ваш код, вам нужно изменить имя функции на другое имя, скажем, name1:

var name1 = function print(){
  console.log("welcome ......");
}
name1();
...