В последнее время я экспериментировал с node.js, и я узнал, что у javascript есть синтаксическая логика, с которой я не мог обернуть голову. Это пример, который я не понимаю, и мне было интересно, является ли это просто случайным фактом javascript или если есть какая-то логика.Почему [] + [] возвращает пустую строку?
ответ
Знак плюс представляет собой либо арифметическое, либо конкатенацию строк. Пустые массивы преобразуются в пустые строки в случае [] + []
.
Метод Array's toString
возвращает одну строку, которая представляет собой список всех элементов массива, разделенный запятой.
От MDN ссылка выше:
JavaScript автоматически вызывает метод ToString когда массив должен быть представлен как текстовое значение или когда массив упоминается в конкатенации.
Та же идея автоматического преобразования типа почему true + true === 2
, и тип преобразования является основой многих сложных викторины JavaScript как this one.
Для не примитивных типов, таких как массивы, для применения добавления он должен быть преобразован в примитивный, ToPrimitive, вызывать toString() для не примитивных типов. Таким образом, в этом случае [] становится «» и, следовательно, «», как результат.
- 1. Почему System.Web.HttpContext.Current.User.Identity.Name возвращает пустую строку?
- 2. Почему JSON возвращает пустую строку?
- 3. Почему subprocess.popen возвращает пустую строку
- 4. Почему nextLine() возвращает пустую строку?
- 5. Почему HttpContext.Current.Request.Url.AbsolutePath возвращает пустую строку?
- 6. Почему regex.Match возвращает пустую строку?
- 7. OpenFileDialogue.DefaultExt возвращает пустую строку
- 8. file_get_contents() возвращает пустую строку
- 9. BeautifulSoup возвращает пустую строку?
- 10. (Coldfusion MX) Почему cfexecute возвращает [пустую строку]?
- 11. Почему значение ячейки сетки возвращает пустую строку?
- 12. Почему «request.getUserPrincipal(). GetName()« иногда возвращает пустую строку?
- 13. Почему textPane.getDocument(). GetText() Возвращает пустую строку?
- 14. Почему Какао иногда возвращает пустую строку?
- 15. Почему метод GetText возвращает пустую строку
- 16. Android почему xPath.String возвращает пустую строку?
- 17. почему javascript this.style [свойство] возвращает пустую строку?
- 18. Почему этот метод возвращает пустую строку?
- 19. Почему мой XmlReader возвращает пустую строку?
- 20. Почему мой EditText возвращает пустую или пустую строку?
- 21. Mustache.to_html() возвращает пустую строку
- 22. file_get_contents возвращает пустую строку
- 23. Validator.RenderControl возвращает пустую строку
- 24. SubStr возвращает пустую строку
- 25. .html() возвращает пустую строку
- 26. getJsonStringFromURL() возвращает пустую строку
- 27. RegExp возвращает пустую строку
- 28. Tidy возвращает пустую строку
- 29. stringWithContentOfURL возвращает пустую строку
- 30. Edittext возвращает пустую строку
+1 по существу правильный ответ. Собственно говоря, массивы _converted_ для строк (посредством вызова 'toPrimitive()'), а не отбрасываются. См. [Спецификация EcmaScript] (http://es5.github.io/#x11.6.1) –
@TedHopp - Спасибо за улов. Немного расширил ответ. –