Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
4 / 4 / 3
Регистрация: 14.10.2014
Сообщений: 322
1

Существует ли аргумент переменной

28.02.2019, 13:28. Показов 6642. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такая задача: Напишите функцию hello2(), которая при вызове будет принимать переменную name (например, «Василий») и выводить строку (в нашем случае «Привет, Василий»). В случае отсутствующего аргумента выводить «Привет, гость»
Мое решение:
Javascript
1
2
3
4
5
6
7
8
9
var name;   
   console.log(typeof(name));
   function hello2(){
      if (typeof(name) !== 'undefined'){
         document.write('Привет ' + name);                     
      }
      else document.write('Привет, гость');
   }
   hello2();
Почему-то в консоли говорят, что переменная строкового типа, хотя ее нет, этой переменной. Т.е. else не выполняется. Помогите, пож ))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2019, 13:28
Ответы с готовыми решениями:

Ошибка с if, не присваивает аргумент переменной
Всем привет! Не могу понять в чем ошибка, какую бы букву LetterGrade не вводил, desireGrade все...

Функция, возвращает квадрат аргумента, если аргумент число; хвост списка, если аргумент список; иначе сам аргумент
Помогите, пожалуйста, с заданием: Написать функцию, которая возвращает квадрат аргумента, если...

Передача типа переменной через аргумент функции
Стоит задача: реализовать свой вариант динамических массивов без использования STL(т.е. без new,...

Напишите выражение для переменной var, используемой как аргумент по ссылке?
На этот вопрос написан правильный ответ "var&" Подскажите пожалуйста что это значит? и где такое...

5
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
28.02.2019, 14:11 2
Как вариант
Javascript
1
2
3
   function hello2(name="гость"){
         document.write('Привет, ' + name);                     
   }
1
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
28.02.2019, 14:14 3
Цитата Сообщение от maks_7 Посмотреть сообщение
хотя ее нет
Цитата Сообщение от maks_7 Посмотреть сообщение
var name;
Как бы есть...

Javascript
1
2
3
4
5
if(name) {
document.write('Привет ' + name);
} else {
else document.write('Привет, гость');
}
Javascript
1
2
3
4
5
if(name !== undefined) {
document.write('Привет ' + name);
} else {
else document.write('Привет, гость');
}
Javascript
1
document.write('Привет ' + (name || 'гость'));
2
Эксперт JS
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
28.02.2019, 14:22 4
Лучший ответ Сообщение было отмечено maks_7 как решение

Решение

Прикольный скелет JavaScript Вы вытащили из шкафа )))
Потому что объявляемая вами переменная name - глобальная, применительно к клиентскому javascript'у это означает, что она окажется свойством объекта window, у которого - сюрприз, сюрприз - свойство name уже есть, и, как нам тут подсказывают, его значения могут быть только строками
Подавляющее число подводных камней уничтожают нативные модули ES2015:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <div id="out"></div>
    <script type="module">
        var name;
        console.log(typeof name);
        function hello2() {
            if (typeof (name) !== 'undefined') {
                document.getElementById('out').innerText = 'Привет ' + name;
            }
            else document.getElementById('out').innerText = 'Привет, гость';
        }
        hello2();
    </script>
</body>
</html>
1
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
28.02.2019, 14:23 5
Цитата Сообщение от maks_7 Посмотреть сообщение
Почему-то в консоли говорят, что переменная строкового типа, хотя ее нет, этой переменной. Т.е. else не выполняется
Потому что в объекте window уже есть переменная name. И она строка. Поэтому можно объявлять так:
Javascript
1
let name
или просто давать другое имя, есть еще способы, например изолировать свою область видимости
1
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
28.02.2019, 14:24 6
Javascript
1
2
3
4
5
6
7
8
9
10
11
(function(){
        var name;
        console.log(typeof name);
        function hello2() {
            if (typeof (name) !== 'undefined') {
                document.getElementById('out').innerText = 'Привет ' + name;
            }
            else document.getElementById('out').innerText = 'Привет, гость';
        }
        hello2();
}());
1
28.02.2019, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2019, 14:24
Помогаю со студенческими работами здесь

Если существует в переменной символ, то
Вот не могу сообразить! Вот в таблице есть допустим три строки: id, title, text. И они выводятся...

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

Существует ли метод/функция перевода значения символьной переменной в int
Хотел спросить, существует ли метод/функция перевода значения символьной ПЕРЕМЕННОЙ в int?

Имя не существует в текущем контексте + использование локальной переменной, которой не присвоено значение
Всем привет. Сделал задачу, но при запуске выдаёт 3 ошибки: Имя &quot;i&quot; не существует в текущем...

Передать аргумент метода через аргумент другого метода
Всем привет. Простой пример того, что хочу сделать. Есть массив констант в классе А. Каждое...

Как определить, существует ли найденный компонент на форме или не существует?
Как определить, существует ли найденный(с помощью FindComponent) компонент на форме или не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru