sl4j / logback под weblogic

Чтобы подкрепить то, что было ранее ранее.

Основная причина этого поведения частично объясняется слабо типизированным характером JavaScript. Например, выражение 1 + «2» неоднозначно, поскольку существуют две возможные интерпретации, основанные на типах операндов (int, string) и (int int):

  • Пользователь намеревается объединить две строки , результат: «12»
  • Пользователь намеревается добавить два числа, результат: 3

Таким образом, с различными типами ввода возможности вывода увеличиваются.

Алгоритм сложения

  1. Поверенные операнды к примитивным значениям

Примитивы JavaScript - это строка, число, значение null, undefined и boolean (Symbol скоро появится в ES6). Любое другое значение - это объект (например, массивы, функции и объекты). Процесс принуждения для преобразования объектов в примитивные значения описывается таким образом:

  • Если примитивное значение возвращается при вызове object.valueOf (), тогда возвращайте это значение, в противном случае продолжайте
  • Если примитивное значение возвращается при вызове object.toString (), тогда возвращайте это значение, в противном случае продолжайте
  • Бросьте TypeError

Примечание: для значений даты , порядок должен вызывать toString до valueOf.

  1. Если какое-либо значение операнда является строкой, тогда выполните конкатенацию строк
  2. В противном случае преобразуйте оба операнда в их числовое значение и затем добавьте эти значения

. Знание различных значений принуждения типов в JavaScript помогает сделать путаные результаты более ясными. См. Таблицу принуждения ниже

+-----------------+-------------------+---------------+
| Primitive Value |   String value    | Numeric value |
+-----------------+-------------------+---------------+
| null            | “null”            | 0             |
| undefined       | “undefined”       | NaN           |
| true            | “true”            | 1             |
| false           | “false”           | 0             |
| 123             | “123”             | 123           |
| []              | “”                | 0             |
| {}              | “[object Object]” | NaN           |
+-----------------+-------------------+---------------+

. Также хорошо знать, что оператор JavaScript + является лево-ассоциативным, поскольку это определяет, какие результаты будут иметь случаи, связанные с более чем одной операцией.

Использование таким образом 1 + «2» даст «12», потому что любое добавление, включающее строку, всегда будет по умолчанию для конкатенации строк.

Вы можете прочитать больше примеров в в этом сообщении в блоге (отказ от ответственности я написал).

13
задан mik 14 May 2012 в 13:19
поделиться