У розділі 6.1.6 «Тип номера» у 9- му виданні ECMA-262 (стандарт, якому призначений JavaScript) йдеться:
… Окремі значення IEEE стандарту IEEE 9007199254740990 (тобто 2 53 -2) представлені в ECMAScript як єдине спеціальне значення NaN… У деяких реалізаціях зовнішній код може виявити різницю між різними значеннями Not-a-Number, але така поведінка залежить від реалізації; до коду ECMAScript, всі значення NaN не відрізняються один від одного.
24.1.17 "NumberToRawBytes (тип, значення, isLittleEndian)" говорить:
… Якщо значення NaN, rawBytes може бути встановлений для будь-якої обраної програми кодування IEEE 754-2008 binary64 формату кодування без числа. Реалізація завжди повинна вибирати одне і те ж кодування для кожної реалізації, що відрізняє значення NaN.
Я не бачу інших уривків, які згадують про NaN, які висвітлюються з цього питання. З одного боку, 24.1.17 ефективно говорить нам, що біти NaN повинні бути збережені при перетворенні NaN в необроблені байти. Однак більше нічого, схоже, не говорить про те, що біти повинні зберігатися в інших операціях. Можна зробити висновок, що це є наміром, оскільки ця вимога в 24.1.17 не буде служити ніякій меті, якщо біти можуть бути довільно змінені будь-якою іншою операцією. Але я б не покладався на реалізацію JavaScript, щоб реалізувати це відповідно до цього наміру.