Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Почему результат разный?




важность: 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. Показатели, характеризующие состояние факторов среды обитания и достижение конечных общественно значимых результатов
I. Результаты опытных посевов лесных полос гнездовым способом весной 1949 и 1950 годов
II. Компетенции, формируемые в результате освоения учебной дисциплины
II. Проведение эксперимента и обработка результатов
II. Требования к результатам освоения
III. Отношение к употреблению животной пищи в других культурах. Почему Славянам не нужно молоко
III. Порядок проведения и оформления результатов проверки
IV. ТРЕБОВАНИЯ К РЕЗУЛЬТАТАМ ОСВОЕНИЯ ОСНОВНОЙ ОБРАЗОВАТЕЛЬНОЙ ПРОГРАММЫ ДОШКОЛЬНОГО ОБРАЗОВАНИЯ
K Сравните оба определения и скажите, которое из них вам представляется более полным/научным и почему.
obelarus.net – сайт о всех результатах и жизни ориентирования; http://ogomel.ucoz.net/ - Все об ориентировании в Гомеле и Гомельской обл.






Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...