Почему результат разный?
⇐ ПредыдущаяСтр 10 из 10 важность: 5решение Всё дело в том, что побитовые операции преобразуют число в 32-битное целое. Обычно число в JavaScript имеет 64-битный формат с плавающей точкой. При этом часть битов (52) отведены под цифры, часть (11) отведены под хранение номера позиции, на которой стоит десятичная точка, и один бит — знак числа. Это означает, что максимальное целое число, которое можно хранить, занимает 52 бита. Число 12345678912345 в двоичном виде: 10110011101001110011110011100101101101011001 (44 цифры). Побитовый оператор ^ преобразует его в 32-битное путём отбрасывания десятичной точки и «лишних» старших цифр. При этом, так как число большое и старшие биты здесь ненулевые, то, естественно, оно изменится. Вот ещё пример: // в двоичном виде 1000000000000000000000000000000 (31 цифры) alert(Math.pow(2, 30)); // 1073741824 alert(Math.pow(2, 30) ^ 0); // 1073741824, всё ок, длины хватает
// в двоичном виде 100000000000000000000000000000000 (33 цифры) alert(Math.pow(2, 32)); // 4294967296 alert(Math.pow(2, 32) ^ 0); // 0, отброшены старшие цифры, остались нули
// пограничный случай // в двоичном виде 10000000000000000000000000000000 (32 цифры) alert(Math.pow(2, 31)); // 2147483648 alert(Math.pow(2, 31) ^ 0); // -2147483648, ничего не отброшено, // но первый бит 1 теперь стоит в начале числа и является знаковым Почему результат второго alert'а такой странный? alert(123456789 ^ 0); // 123456789 alert(12345678912345 ^ 0); // 1942903641 Взаимодействие с пользователем: alert, prompt, confirm В этом разделе мы рассмотрим базовые UI операции: alert, prompt и confirm, которые позволяют работать с данными, полученными от пользователя. Alert Синтаксис: alert(сообщение) alert выводит на экран окно с сообщением и приостанавливает выполнение скрипта, пока пользователь не нажмёт «ОК». alert("Привет"); Окно сообщения, которое выводится, является модальным окном. Слово «модальное» означает, что посетитель не может взаимодействовать со страницей, нажимать другие кнопки и т.п., пока не разберётся с окном. В данном случае – пока не нажмёт на «OK».
Prompt Функция prompt принимает два аргумента: result = prompt(title, default); Она выводит модальное окно с заголовком title, полем для ввода текста, заполненным строкой по умолчанию default и кнопками OK/CANCEL. Пользователь должен либо что-то ввести и нажать OK, либо отменить ввод кликом на CANCEL или нажатием Esc на клавиатуре. Вызов prompt возвращает то, что ввёл посетитель — строку или специальное значение null, если ввод отменён. Safari 5.1+ не возвращает null Единственный браузер, который не возвращает null при отмене ввода — это Safari. При отсутствии ввода он возвращает пустую строку. Предположительно, это ошибка в браузере. Если нам важен этот браузер, то пустую строку нужно обрабатывать точно так же, как и null, т.е. считать отменой ввода. Как и в случае с alert, окно prompt модальное. var years = prompt('Сколько вам лет?', 100);
alert('Вам ' + years + ' лет!') Всегда указывайте default Второй параметр может отсутствовать. Однако при этом IE вставит в диалог значение по умолчанию "undefined". Запустите этот код в IE, чтобы понять о чём речь: var test = prompt("Тест"); Поэтому рекомендуется всегда указывать второй аргумент: var test = prompt("Тест", ''); // <-- так лучше Confirm Синтаксис: result = confirm(question); confirm выводит окно с вопросом question с двумя кнопками: OK и CANCEL.
Читайте также: I. Показатели, характеризующие состояние факторов среды обитания и достижение конечных общественно значимых результатов Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|