Может кто-нибудь объяснить вывод следующего кода? - PullRequest
0 голосов
/ 14 февраля 2020

var employeeId = 'abc123';
function foo() {
	employeeId = '123bcd';
	return;

	function employeeId() {
		var x = 0;
	}
}
foo();
console.log(employeeId); //abc123

Вопрос основан на подъеме. Мы печатаем employeeId в console.log здесь. Может кто-нибудь объяснить вывод кода выше?

1 Ответ

2 голосов
/ 14 февраля 2020

По правилу подъема, в том же замыкании, объявление function почти эквивалентно:

var employeeId = 'abc123';

function foo() {
	var employeeId = function () { // hoisted from the function below
		var x = 0;
	}

	employeeId = '123bcd';
	return;

	// function employeeId() {
	// 	var x = 0;
	// }
}

foo();
console.log(employeeId); //abc123

Таким образом, внешняя область действия employeeId не изменилась, поскольку она была скрыта в области действия foo.

...