wtf javascript
просто нет слов. мож кто объяснить зачем они так сделали ?
var m = [23,,,,45]; alert(m.indexOf(m[1])); |
Как так?
По примеру: первого элемента в массиве не существует, поэтому m[1] == undefined. Но ни одно undefined в массиве нет. var m = [23,,,undefined,45]; alert(m.indexOf(m[1])); |
Kolyaj,
ну и что, что нет. это же массив. где тут здравый смысл бегать по массиву как по хешу. |
Потому что массив в JavaScript-е не то же самое, что массив в PHP, и уж тем более не то же самое, что массив в Си.
http://alljs.ru/articles/array/whatis |
Цитата:
|
Цитата:
|
Цитата:
|
Я не любитель обсуждать вещи, которые невозможно изменить. Это как о политике на кухне разговаривать. Есть свойство, у него есть название, у него есть предопределённое поведение. Зачем рассуждать, что по чьему-то мнению оно работает не правильно?
|
Цитата:
|
Если на кухне порассуждать о "довели страну", жизнь в стране лучше не станет.
|
всё зависит от того, кто сидит на кухне...
|
Мне кажется всё логично.
Получается, массив кагбэ растянут до длинны length, но это не значит что в этом случае в массиве все ячейки должны быть заполнены. И это не значит, что ячейка должна получать значение по умолчанию. Это так же касается начальных и конечных ячеек: [,,,,1,2,3,,,,] То же самое: var arr = []; arr.length = 20; arr[5] = 1; arr[6] = 2; arr[7] = 3; Цифры могут не совпадать, но суть должна быть ясна. Всё в порядке :yes: |
Цитата:
более того тсу скажу что это ещё цветочки. где-то видел блог чувака, который экспериментировал с ошибками интерпретатора. У меня так там за 1-е 2 строчки мозг в трубочку свернулся.... |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
в этом же духе сделан array.map() , ну и в других методах массива есть такое. вот мне этот момент никогда в голову не приходил и даже подумать не мог, что кто та так сделает. это не особенность языка , это просто кто-то так решил сделать, а потом все повторили, а потом придумали объяснение. |
Цитата:
Цитата:
|
Цитата:
Языки надо изучать, а не надеяться на свою интуицию. |
Цитата:
если бы это был список упорядоченный по индексу я бы понял почему так. но это массив Array, и не важно как он реализован в js-е. Kolyaj, а если бы ты решал как должно быть , ты бы также реализовал ? как сейчас реализовано |
Цитата:
|
Если я не ошибаюсь, в ActionScript точно так же.
|
hasOwnProperty тоже когда-то в стандарте был целую тучу лет. Но одумались, покаялись грешные ).
|
А hasOwnProperty чем не угодил?
|
Kolyaj,
!!{}.hasOwnProperty // true. потому если это важно приходиться сбрасывать {hasOwnProperty: false, constructor: false, ...} мож ошибаюсь. раньше вроде видел у Object метод который говорил есть ли у обьекта свойство или нет. а сейчас найти не удается. |
Цитата:
|
Цитата:
|
ошибся по поводу hasOwnProperty . но считаю что этому методу не место в пустом объекте.
у Object появился метод getOwnPropertyDescriptor но он чуток не то. |
B~Vladi,
ты гденибуть видишь что в примере объекту определенно значение hasOwnProperty. по этой причине {} нельзя воспринимать как "ассоциативный массив", а хотелось бы без хаков использовать его как таковой. |
Цитата:
alert( {}.hasOwnProperty( "hasOwnProperty" ) );:D |
Цитата:
|
B~Vladi,
такой логикой можно было бы свойство __proto__ добавить в стандарт, и кучу других. Вы же не расширяете Object.prototype своими свойствами, вот тот тоже самое. hasOwnProperty думаю со времени вырежут, и по Array.indexOf изменят позицию . если к тому времени Dart не займет место JS. |
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
по поводу dart, они говорят о фундаментальных проблемах в javascript, которые нельзя изменить, не начав с нуля, либо очень сложно и это займет слишком много времени. Рассуждения на тему, что это могут быть за проблемы можно почитать здесь и здесь (еще наткнулся на сайт с wtf'ами javascript). На мой взгляд, наиболее вероятные проблемы - статическая типизация и производительность. Не то чтобы для меня это проблемы, но может для каких-то проектов это важно. Ну и в javascript есть вещи, которых лучше бы не было или лучше чтобы они было сделаны по-другому. Но не думаю, что это причина для создания нового языка. кстати, после ecma-262-3 там уже приняли какую-то спецификацию? ![]() |
x-yuri,
сорь, что не в тему, кинь ссылку на лучшие форумы или правильные форумы, ты как-то кидал ссылку на статью. Не могу вспомнить название, толи "эти страшные форумы" или что-то в этом духе. Мне срочно пришлось писать форум, чужой взять не могу в силу определенных обстоятельств, хочу избежать граблей. Там ещё юзабилити обсуждалось. |
|
Цитата:
А о ActionScript что скажите? Тоже накосячили? Или просто повторили? |
Цитата:
кстати alert([,,,,,,,,,,1].join('+')) |
Часовой пояс GMT +3, время: 16:21. |