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

console.log(name);
console.log(lol);

var name = function(args = "Hello World"){
    console.log(args)
}

var lol = function(args = "Hello world") {
    console.log(args)
}

Выход

function(args = "Hello World"){
    console.log(args)
}

И

main.js:57 undefined

Почему переменная имени не определена?

0
Karambit 31 Май 2020 в 11:55

3 ответа

Лучший ответ

Окно, которое является корневой областью действия, уже имеет свойство name. Попробуйте следующее и посмотрите на вывод в вашей консоли. Если вы щелкнете по ссылке, на открывшейся странице появится MyWin в качестве вывода для имени.

HTML (test.html)

<head>
    <title>test</title>
</head>

<body>
    <a href="test.html" target="MyWin">Click me!</a>
    <script src="test.js"></script>
</body>

</html>

Javascript (test.js)

console.log("name", name);
console.log("notname", notname);
console.log("lol", lol);


var notname = function (args = "Hello World") {
    console.log(args)
}

var lol = function (args = "Hello world") {
    console.log(args)
}
2
Ralph Ritoch 31 Май 2020 в 09:27

Я думаю, вы должны войти в систему, поэтому вы запутались.

console.log(name);
console.log(lol);

var name = function(args = "Hello World"){
    console.log(args)
}

var lol = function(args = "Hello world") {
    console.log(args)
}

console.log(name);
console.log(lol);
0
Himanshu Pandey 31 Май 2020 в 09:16

Рассмотрим код

console.log(test);

var test = function(args = "Hello World"){
    console.log(args)
}

Это вернет undefined , поскольку подняты только объявления . То есть ваш код после подъема будет

var test;
console.log(test);

test = function(args = "Hello World"){
    console.log(args)
}
0
naveen 31 Май 2020 в 09:11