Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Непонятки с оператором typeof (https://javascript.ru/forum/misc/26014-neponyatki-s-operatorom-typeof.html)

DreamTheater 22.02.2012 20:03

Во-первых массивы и массивоподобные объекты это разные сущности, которые итерируются совершенно по-разному. А во-вторых уже давным-давно написаны универсальные функции для работы с коллекциями, например в Underscore.

DreamTheater 22.02.2012 20:04

Цитата:

Сообщение от vasa_c (Сообщение 159231)
Вы считаете JS идеальным языком?

Нет, не считаю.

vasa_c 22.02.2012 20:04

Цитата:

я еще раз повторю
я дал примерчик - написать функцию, учитывающую все возможные типы данных, работающую во всех браузерах и получить при этом удовольствие.

vasa_c 22.02.2012 20:06

Цитата:

давным-давно написаны универсальные функции для работы с коллекциями, например в Underscore.
Понятно что функции написаны и что более-менее шарящий в предмете человек тоже их напишет если нужно.
Сама проблема именно в том, что эти функции пришлось писать, вместо того, чтобы просто работать с языком.

vasa_c 22.02.2012 20:07

Цитата:

Во-первых массивы и массивоподобные объекты это разные сущности, которые итерируются совершенно по-разному.
Чем должна отличаться сущность итерации по Array() и HTMLCollection?

DreamTheater 22.02.2012 20:09

Цитата:

Сообщение от vasa_c (Сообщение 159235)
Понятно что функции написаны и что более-менее шарящий в предмете человек тоже их напишет если нужно.
Сама проблема именно в том, что эти функции пришлось писать, вместо того, чтобы просто работать с языком.

Конструкция for...in работает с абсолютно любыми видами коллекций, чем не универсальность?

DreamTheater 22.02.2012 20:10

Цитата:

Сообщение от vasa_c (Сообщение 159236)
Чем должна отличаться сущность итерации по Array() и HTMLCollection?

Тем что в массивах есть индексы, а во всех прочих - имена свойств, то есть первые являются числами, а вторые - строками.

Mахmaxmaximus 22.02.2012 20:23

Цитата:

Сообщение от vasa_c
я дал примерчик - написать функцию, учитывающую все возможные типы данных, работающую во всех браузерах и получить при этом удовольствие.

я нихрена не понял О_О

в чем ад работы с типами данных с typeof в javascript? можно пример кода где проявляется адовость?

Octane 22.02.2012 20:32

Вообще надо хотя бы разок заглянуть в http://javascript.ru/ecma/part11#a-11.4.3 и «ад кромешный» рассеется.
-------------

Цитата:

Сообщение от DreamTheater
Все верно, в JS null является объектом без прототипа, соответственно его тип - object.

Это Object.prototype.__proto__===null, сам null является отдельным типом, то что выдает typeof — соглашение
Цитата:

Сообщение от Dmitry Soshnikov
Всего стандарт определяет девять типов, причём непосредственно доступны в ECMAScript программе, всего шесть:

• Undefined
Null
• Boolean
• String
• Number
• Object

Остальные три типа доступны лишь на уровне реализации…

Цитата:

Сообщение от Dmitry Soshnikov
оператор typeof возвращает строковое значение, взятое из жёстко закреплённой таблицы, где прописано: “для null – возвращать "object"

http://dmitrysoshnikov.com/ecmascrip...nyih-znacheniy

Mахmaxmaximus 22.02.2012 20:38

Octane,
ты стандарт наизусть знаешь?


Часовой пояс GMT +3, время: 00:27.