Что выведет alert или что выведет код ниже alert null 2 undefined

Домашнее задание №8

1. Для практикума из занятия 7 продумать, где можно применить замыкания.

2. Не выполняя кода, ответить, что выведет браузер и почему:

if (!(«a» in window)) <
var a = 1;
>
alert(a);

function a(x) <
return x * 2;
>
var a;
alert(a);

function b(x, y, a) <
arguments[2] = 10;
alert(a);
>
b(1, 2, 3);

function a() <
alert(this);
>
a.call(null);

Решение

1. Для практикума из занятия 7 продумать, где можно применить замыкания.

Мне кажется, что есть вариант использования замыкания при определении координат для обеспечения «телепортации» змейки при достижении границ поля игры.
Предлагаемый вариант предусматривает следующее:
1. В теле функции «move()» создать главную функцию замыкания «coordXY(newUnit)».
2. В функции «coordXY(newUnit)» создать вложенную (возвращаемую) анонимную функцию с перечнем аргументов в условии, которые, затем, будут соответствовать изменениям координат X и Y по соответствующим направлениям движения змейки («x-«, «x+», «y-«, «y+»).
3. В тело вложенной функции поместить ту часть кода, которая отвечает за «телепортацию» змейки.
4. Создать переменную «s» и присвоить ей результат вывода функции «coordXY(newUnit)» со значением «newUnit === undefined», в качестве первого условия, необходимого для создания телепортации.
5. После того, как переменная «s» «стала» функцией, присваиваем ей входящие значения для вложенной функции, соответствующие направлениям изменения координат «s(‘x-‘, ‘x+’, ‘y+’, ‘y-‘);».

Ниже приведен предлагаемый код:

function coordXY (newUnit) <

return function (arg1, arg2, arg3, arg4) <

2. Не выполняя кода, ответить, что выведет браузер и почему:

if (!(«a» in window)) <
var a = 1;
>
alert(a);

В данном примере браузер выведет undefined потому что по условию if строка должна быть неистинной, т.е. без значения, а она имеет числовое значение 1, значит условие не соблюдается, а на этот случай условия вывода нет (undefined), что и выводится в alert.

В данном примере браузер не выведет ничего, т.к. «а» — это имя функции и в теле функции не определено какое-либо действие.

function a(x) <
return x * 2;
>
var a;
alert(a);

В данном примере браузер не выведет ничего, т.к. переменная «a» объявлена без указания значения, а значит в «alert» выводится функция «а», для которой значение переменной «x», указанной в функции, отсутствует.

function b(x, y, a) <
arguments[2] = 10;
alert(a);
>
b(1, 2, 3);

В данном примере браузер выведет в «alert» значение третьего аргумента, которому присвоено значение 10 в теле функции.

function a() <
alert(this);
>
a.call(null);

Слово «this» обозначает объект, который запускает данную функцию. здесь объект отсутствует, значит «this» ничего не обозначает. Браузер понимает, что должен бытьобъект, но не видит какой. В «flert» будет указано, что это объект без названия.

Источник

Задачи с собеседований на понимание основ

Здесь будут рассмотрены задачи JavaScript, задаваемые на реальных собеседованиях.

Желательно самостоятельно решить задачи на понимание основ языка JavaScript.

Ниже представлены условия задач. И далее их решения.

1) Какое будет выведено значение: let x = 5; console.log(x++); ?

2) Чему равно такое выражение: [ ] + false — null + true ?

3) Что выведет этот код: let y = 1; let x = y = 2; alert(x); ?

4) Чему равна сумма [ ] + 1 + 2?

5) Что выведет этот код: alert( «1»[0] )?

6) Чему равно 2 && 1 && null && 0 && undefined ?

8) Что выведет этот код: alert( null || 2 && 3 || 4 ); ?

9) a = [1, 2, 3]; b = [1, 2, 3]; Правда ли что a == b ?

10) Что выведет этот код: alert( +»Infinity» ); ?

11) Верно ли сравнение: «Ёжик» > «яблоко»?

12) Чему равно 0 || «» || 2 || undefined || true || falsе ?

1-я задача — Постфикс и Префикс

1) Какое будет выведено значение: let x = 5; console.log(x++); ?

Ответ 5 . Потому что постфиксная форма записи сначала возвращает старое значение. Об этом шла речь здесь.

Если снова вывести переменную в консоль, то мы увидим уже новое значение.

Или нужно было сделать так.

Сложение различных типов данных

Задача №2 — Сложение различных типов данных в JavaScript

Чему равно такое выражение: [ ] + false — null + true ?

Чтобы правильно решить эту задачу требуется анализ . Поэтому это задание следует выполнить поэтапно .

Математические операции : сложение и вычитание — выполняются последовательно друг за другом. О порядке выполнения операторов читайте здесь.

1-ый этап . Что дает сложение пустого массива с булевым значением [ ] + false ?

Результат false и это строка. Почему?

Следует запомнить, что в подобных выражениях пустой массив [ ] конвертируется в строку «» . Это уже не тип данных object , а тип данных string .

Таким образом в данном контексте запись [ ] + false (сложение массива и false) идентична записи «» + false (сложение строки и false) .

Из прошлой статьи известно, что сложение чего-либо со строкой дает строку .

Тут стоит обратить внимание и на цвет false в консоли — он белый (при темной теме браузера) или черный (при светлой теме): это говорит о строковом типе данных. В то время как булевы значения true или false в консоли имеют фиолетовый цвет .

Итак, сложение пустого массива с булевым значением дает в результате строку.

2-ой этап . Из строки нужно отнять (вычесть) null. Каков результат?

Вычитание из строки другого типа данных — это бессмысленная математическая операция. Поэтому в результате мы увидим NaN — не число.

3-ий этап . Что дает сложение NaN с булевым значением?

Сложение не числа NaN с булевым значением дает в результате NaN .

Итог. Чему равно такое выражение: [ ] + false — null + true ? Ответ NaN .

При решении этой задачи нужно понимать, как работает динамическая типизация.

И самое главное — запомнить особенность с пустым массивом (см. 1-ый этап).

Источник

Логические операторы

В JavaScript есть три логических оператора: || (ИЛИ), && (И) и ! (НЕ).

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

Давайте рассмотрим их подробнее.

Оператор «ИЛИ» выглядит как двойной символ вертикальной черты:

Традиционно в программировании ИЛИ предназначено только для манипулирования булевыми значениями: в случае, если какой-либо из аргументов true , он вернёт true , в противоположной ситуации возвращается false .

В JavaScript, как мы увидим далее, этот оператор работает несколько иным образом. Но давайте сперва посмотрим, что происходит с булевыми значениями.

Существует всего четыре возможные логические комбинации:

Как мы можем наблюдать, результат операций всегда равен true , за исключением случая, когда оба аргумента false .

Если значение не логического типа, то оно к нему приводится в целях вычислений.

Например, число 1 будет воспринято как true , а 0 – как false :

Обычно оператор || используется в if для проверки истинности любого из заданных условий.

Можно передать и больше условий:

ИЛИ «||» находит первое истинное значение

Описанная выше логика соответствует традиционной. Теперь давайте поработаем с «дополнительными» возможностями JavaScript.

Расширенный алгоритм работает следующим образом.

При выполнении ИЛИ || с несколькими значениями:

Оператор || выполняет следующие действия:

  • Вычисляет операнды слева направо.
  • Каждый операнд конвертирует в логическое значение. Если результат true , останавливается и возвращает исходное значение этого операнда.
  • Если все операнды являются ложными ( false ), возвращает последний из них.

Значение возвращается в исходном виде, без преобразования.

Другими словами, цепочка ИЛИ «||» возвращает первое истинное значение или последнее, если такое значение не найдено.

Это делает возможным более интересное применение оператора по сравнению с «чистым, традиционным, только булевым ИЛИ».

Получение первого истинного значения из списка переменных или выражений.

Представим, что у нас имеется ряд переменных, которые могут содержать данные или быть null/undefined . Как мы можем найти первую переменную с данными?

Если бы и currentUser , и defaultUser были ложными, в качестве результата мы бы наблюдали «unnamed» .

Сокращённое вычисление.

Операндами могут быть как отдельные значения, так и произвольные выражения. ИЛИ вычисляет их слева направо. Вычисление останавливается при достижении первого истинного значения. Этот процесс называется «сокращённым вычислением», поскольку второй операнд вычисляется только в том случае, если первого недостаточно для вычисления всего выражения.

Это хорошо заметно, когда выражение, указанное в качестве второго аргумента, имеет побочный эффект, например, изменение переменной.

В приведённом ниже примере x не изменяется:

Если бы первый аргумент имел значение false , то || приступил бы к вычислению второго и выполнил операцию присваивания:

Присваивание – лишь один пример. Конечно, могут быть и другие побочные эффекты, которые не проявятся, если вычисление до них не дойдёт.

Как мы видим, этот вариант использования || является «аналогом if «. Первый операнд преобразуется в логический. Если он оказывается ложным, начинается вычисление второго.

В большинстве случаев лучше использовать «обычный» if , чтобы облегчить понимание кода, но иногда это может быть удобно.

Оператор И пишется как два амперсанда && :

В традиционном программировании И возвращает true , если оба аргумента истинны, а иначе – false :

Источник

Что выведет alert или что выведет код ниже alert null 2 undefined

Задачи по теме Условия. Практика на условия if-else в JavaScript

// Задача 30.1
// В переменной month лежит какое-то число из интервала от 1 до 12. Определите в какую пору года попадает этот месяц (зима, лето, весна, осень).

Задача по теме Условия. Конструкция switch-case в JavaScript

// Задача 31.1
// Переменная num может принимать значения 1, 2, 3 или 4. Если она имеет значение 1, то выведите на экран текст ‘зима’, если значение 2 — ‘весна’ и так далее. Если в переменной будет какое-то другое значение — выведите на экран сообщение об ошибке. Решите задачу через switch-case.

switch (num) <
case 1:
alert(‘Зима’);
break;
case 2:
alert(‘Весна’);
break;
case 3:
alert(‘Лето’);
break;
case 4:
alert(‘Осень’);
break;
default:
alert(‘Такого значения нету’);
break;
>

Задача по теме Условия. Тернарный оператор в JavaScript

// Задача 32.1
// Пусть дана переменная num, которая может быть либо отрицательной, либо положительной. Запишите в переменную result число 1, если переменная num больше или равна нулю, и число -1, если переменная num меньше нуля.

let num = -1;
let result = num >=0 ? 1 : -1;

Задачи по теме Условия. Логические операции в JavaScript. Часть 1

//Задача 33.1
// Пусть даны следующие переменные. Используя оператор ==, узнайте, равны ли значения этих переменных или нет.

let a = 2 * (3 — 1);
let b = 6 — 2;
let result = a == b;

// Задача 33.2
// Пусть даны следующие переменные. Используя оператор >, узнайте, больше ли переменная a, чем b.

let a = 5 * (7 — 4);
let b = 1 + 2 + 7;
let result = a > b;

// Задача 33.3
// Используя операцию оператор !=, узнайте, разные ли значения этих переменных или нет.

let a = 2 ** 4;
let b = 4 ** 2;
let result = a != b;

Задачи по теме Условия. Логические операции в JavaScript. Часть 2

// Упражнение 1
// Что выведет код ниже?
alert( null || 2 || undefined );

// Упражнение 2
// Что выведет код ниже?
alert( alert(1) || 2 || alert(3) );

// Ответ: сначала выведет undefined, затем 2

// Упражнение 3
// Что выведет код ниже?
alert( 1 && null && 2 );

// Упражнение 4
// Что выведет код ниже?
alert( alert(1) && alert(2) );

// Ответ: сначала 1, затем undefined

// Упражнение 5
// Что выведет код ниже?
alert( null || 2 && 3 || 4 );

//упражнение 6
let age = 14;

//упражнение 8
let userName = prompt(«Кто там?»);

if(userName == » || userName == null) <
alert(«Отменено»);
> else if (userName == «Админ») <
let password = prompt(«Введите пароль»);

if (password == » || password == null) <
alert(«Отменено»);
> else if (password == «Я главный») <
alert(«Здравствуйте!»);
> else <
alert(«Пароль неверный!»);
>
> else <
alert(«Вы кто такой? Идите отсюда! Я вас не звал!»);
>

Задача по теме Условия. Функция confirm в JavaScript

// Задача 34.1
// Спросите у пользователя, есть ли ему уже 18 лет. Если есть — выведите на экран алерт с текстом для взрослых, а если нет, выведите сообщение о том, что доступ пользователю запрещен.

let userAge = confirm(‘Вам уже есть 18 лет?’);

if (userAge == true) <
alert(‘Этот текст только для совершеннолетних’);
> else <
alert(‘Подрасти, а потом возвращайся!’);
>

Задачи по теме Массивы. Цикл while в JavaScript

// Задача 35.1
// Выведите в консоль числа от 1 до 100.

Задачи по теме Массивы. Ошибки начинающих при работе с циклом while в JavaScript

// Задача 36.1
// В следующем коде программист вывел числа от 10 до 1. В коде, однако, была допущена ошибка, которая привела к тому, что цикл выполняется бесконечно. Исправьте ошибку программиста.

// Задача 36.2
// В следующем коде программист вывел числа от 10 до 1. В коде, однако, была допущена ошибка, которая привела к тому, что цикл выполняется бесконечно. Исправьте ошибку программиста.

// Задача 36.3
// В следующем коде программист вывел числа от 10 до 1. В коде, однако, была допущена ошибка, которая привела к тому, что на экран ничего не вывелось. Исправьте ошибку программиста.

// Задача 36.4
// В следующем коде программист вывел числа от 10 до 1. В коде, однако, была допущена ошибка, которая привела к тому, что на экран ничего не вывелось. Исправьте ошибку программиста.

// Задача 36.5
// В следующем коде программист вывел числа от 10 до 1. В коде, однако, была допущена ошибка, которая привела к тому, что цикл вывел только число 10 и закончил свою работу. Исправьте ошибку программиста.

Задачи по теме Массивы. Цикл for в JavaScript

// Задача 37.1
// С помощью цикла for выведите в консоль числа от 1 до 100.

for (let i = 1; i = 0; i—) <
console.log(i);
>

Задачи по теме Массивы. Накопление результата в цикле JavaScript

// Задача 38.1
// Найдите произведение целых чисел от 1 до 20.

for (let i = 1; i Нравится Показать список оценивших

Задачи по теме Массивы. Цикл for для массивов в JavaScript. Часть 1

// Задача 39.1
// Дан массив с элементами ‘a’, ‘b’, ‘c’, ‘d’, ‘e’. С помощью цикла for выведите все эти элементы на экран.

let arr = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’];

for (let i = 0; i Нравится Показать список оценивших

Задачи по теме Массивы. Цикл for для массивов в JavaScript. Часть 2

// Задача 39.6
// Дан массив с элементами 2, 5, 9, 15, 1, 4. С помощью цикла for и оператора if выведите в консоль те элементы массива, которые больше 3-х, но меньше 10.

let arr = [2, 5, 9, 15, 1, 4];

// Задача 39.8
// Дан массив arr. Найдите среднее арифметическое его элементов (сумма делить на количество). Проверьте задачу на массиве с элементами 1, 2, 3, 4, 5.

let arr = [1, 2, 3, 4, 5];
let result = 0;

for (let i = 0; i 0; i—) <
console.log(i);
>

// Задача 39.11
// Дан массив с числами. С помощью цикла выведите на экран все элементы, значение которых совпадает с их порядковым номером в массиве.

let arr = [3, 1, 2, 5, 4];

// Задача 39.13
// Дан массив с числами. С помощью цикла for и функции document.write выведите каждый элемент массива в отдельном абзаце.

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

for (let i = 0; i Нравится Показать список оценивших

Задачи по теме Массивы. Перебор массива циклом for-of в JavaScript

// Задача 40.1
// Дан массив с элементами ‘a’, ‘b’, ‘c’, ‘d’, ‘e’. С помощью цикла for-of выведите все эти элементы на экран.

let arr = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’];

for (let elem of arr) <
document.write(elem + ‘ ‘);
>

// Задача 40.2
// Дан массив с элементами 1, 2, 3, 4, 5. С помощью цикла for-of найдите сумму элементов этого массива.

let arr = [1, 2, 3, 4, 5];
let result = 0;

for (let elem of arr) <
result += elem;
>

// Задача 40.3
// Пусть у вас есть массив с названиями месяцев. С помощью цикла выведите на экран все месяцы из массива. Определите, каким циклом удобнее будет решить эту задачу: циклом for-of или обычным for со счетчиком.

let months = [‘Декабрь’, ‘Январь’, ‘Февраль’];

for (let elem of months) <
document.write(elem + ‘ ‘);
>

// Задача 40.4
// Пусть у вас есть массив с названиями месяцев. Пусть в переменной month хранится номер текущего месяца, например, 10. С помощью цикла выведите все месяцы, а текущий месяц выведите курсивом. Определите, каким циклом удобнее будет решить эту задачу: циклом for-of или обычным for со счетчиком.

let months = [‘Январь’, ‘Февраль’, ‘Март’, ‘Апрель’, ‘Май’, ‘Июнь’, ‘Июль’, ‘Август’, ‘Сентябрь’, ‘Октябрь’, ‘Ноябрь’, ‘Декабрь’];
let month = 10;

Источник

Читайте также:  Как правильно чистить почки говяжьи
Оцените статью