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

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

प्रश्न उत्थापन पर आधारित है। हम यहां कंसोल.लॉग में कर्मचारी आईडी प्रिंट कर रहे हैं। क्या कोई उपरोक्त कोड के आउटपुट की व्याख्या कर सकता है?

0
Vivek Aggarwal 14 फरवरी 2020, 09:34

1 उत्तर

उत्थापन के नियम से, उसी बंद में, 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 में अस्पष्ट हो गया है। समारोह का दायरा।

3
Hao Wu 14 फरवरी 2020, 09:45
अरे यार यह कितना सूक्ष्म है। यह समस्या Javascript की जटिलताओं में गहरी खुदाई कर रही है।
 – 
Jeremy Thille
14 फरवरी 2020, 11:14