Для правильного вопроса надо знать половину ответа
Оценка сложности алгоритма O() - это то, как меняется время вполнения алгоритма от изменения объёма обрабатываемых этим алгоритмом данных.
O(1) - время не зависит от объёма данных.
O(n) - время растёт пропорционально объёму данных.
O(n2) - время растёт пропорционально квадрату объёма данных.
и т.д.
Получение длины строки может иметь разную сложность в зависимости от языка программирования. Если используется хранение строк с префиксом длины, как в Паскале, то сложность будет O(1), так как достаточно только прочитать хранящееся значение. Если же строка хранится как в C/C++, с нулевым байтом в конце, то сложность будет O(n), так как надо в цикле перебрать все байты строки, пока не найдём ноль.
Для правильного вопроса надо знать половину ответа
Потому что компьютер хранит числа в двоичном представлении.
Значит 598.68 запишется как 1.0001010110(10101110000101000111) * 29
Поскольку дробь бесконечная, а разрядность вычислений нет, то число в памяти компьютера представляется с некоторой погрешностью. При вычислениях эта погрешность, как правило, нарастает.
Для правильного вопроса надо знать половину ответа
Потому что асинхронность. Функция getFile завершает свою работу сразу после отправки запроса на сервер. После получения ответа будет вызвана анонимная каллбэк-функция xhr.onreadystatechange, из которой возвращать данные бесполезно, их никто не ждёт.
Для правильного вопроса надо знать половину ответа
По стандарту JS, если хотя бы одно из сравниваемых значений не является строкой, то оба операнда приводятся к числовому типу. При этом строка, не представляющая собой корректное число, переводится в NaN. Любые сравнения с NaN дают false.
Для правильного вопроса надо знать половину ответа
Как выражение в первой скобки, если к примеру v может быть 10.
Может. Но только если вы напишете (v => v)(10).
Запись v => v эквивалентна записи function (v) { return v; }. Соответственно, (v => v)('run') эквивалентно (function (v) { return v; })('run')
Для правильного вопроса надо знать половину ответа
Такое поведение может быть связано с тем, что часть контента, в том числе и необходимая для работы этого скрипта, генерируется динамически после загрузки основного документа.
Самый надёжный способ для таких ситуаций - вешать обработчик на родительский элемент, гарантированно присутствующий на момент DOMContentLoaded и использовать всплытие событий.
Второй вариант - искать, в каком месте реально создаётся и добавляется в DOM нужный элемент и вешать обработчик в это месте кода.