Ответ 1
В спецификации много вещей, которые явно оставлены для реализации. Особенно, когда дело доходит до Host Objects, может быть много причуд. Примеры, которые не имеют ничего общего с объектами хоста:
Значения внутренних свойств [[Prototype]] и [[Class]] глобального объекта зависят от реализации.
15.1.2.2 parseInt (string, radix)
[Если слишком много значимых цифр] mathInt может быть зависимой от реализации приближением к математическому целочисленному значению, которое представлено Z в нотации radix-R.
15.3.4.2 Function.prototype.toString
Возвращается представление функции , зависящее от реализации.
Почти все алгоритмы синтаксического анализа даты и строчки зависят от реализации, включая toLocaleString
, toString
, parse
и конструктор Date
.
15.4.4.11 Array.prototype.sort(comparefn) - скорее всего, лучший пример:
Если comparefn не является undefined и не является последовательной функцией сравнения для элементов этого массива, поведение сортировки реализовано.
[...] Если proto не является нулевым и существует целое число j, так что выполняются все нижеприведенные условия, то поведение сортировки определяется реализацией:
- obj разрежен (15.4)
- 0 ≤ j < Len
Поведение сортировки также реализовано, если obj разрежено, и выполняется любое из следующих условий:
- Внутреннее свойство [[Extensible]] объекта obj неверно.
- Любое свойство индекса массива obj, чье имя является неотрицательным целым числом меньше len, является свойством data, атрибут [[Configurable]] является ложным.
Поведение сортировки также реализовано, если любое свойство индекса массива obj, чье имя является неотрицательным целым числом меньше len, является свойством accessor или является свойством data, атрибут [[Writable]] false.
И наиболее надежно:
Выполните последовательность вызовов , зависящих от реализации [...]
15.5.4.9 String.prototype.localeCompare(that)
Две строки сравниваются с реализацией
15.5.4.11 String.prototype.replace[В символах замены, если число больше числа групп], результат определяется реализацией.
Я просто остановлю перечисление здесь, вы можете выполнить поиск по спецификации. Другими заметными местами могут быть методы toLocaleString
или зависимые от реализации приближения, возвращаемые методами Math
.