Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2011, 19:08
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

alert({ня:3} == {ня:3})//false
alert({ня:3} == {ня:3})


оператор сравнивания с приведением типов 2 идентичных(равных) объекта (но разных) считает не равными? Почему так сделали и зачем они не исправляют такое упущение в языке? Возможно это не упущение и сделано намеренно для чего-то, тогда для чего?
Ответить с цитированием
  #2 (permalink)  
Старый 25.12.2011, 19:11
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

я конечно могу сравнить идентичность обьектов перебрав их ключи и параметры и сравнить. но на кой черт тогда нужен оператор сравнивания? может он не умеет работать с не примитивными значениями? я понимаю злость и ненависть заступников оператора сравнивания которые хотят щас меня убить такого тупого, но поймите меня я обычный. человек, новичок в программировании и мне не понятна одна вещь я просто спрашиваю. Не ругайте меня пожалуйста
Ответить с цитированием
  #3 (permalink)  
Старый 25.12.2011, 19:17
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

А как бы Вы сравнивали такое?
var a = {}, b = {};
a.a = a;
b.a = b;
alert(a == b)
a и b идентичны, но разные.

Как видно, сравнение объектов перебором их структуры может быть затратным.
Ответить с цитированием
  #4 (permalink)  
Старый 25.12.2011, 19:22
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от B@rmaley.e><e Посмотреть сообщение
А как бы Вы сравнивали такое?
var a = {}, b = {};
a.a = a;
b.a = b;
alert(a == b)
a и b идентичны, но разные.

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

тут 2 этапа:
1) вначале отыскиваются и сравниваются все примитивные значения, если разница не обнаружена, то.
2) потом сравниваются все остальные ссылки. при том используется не только примитивный метод getValue() а еще и анализ на цикличность ссылок. при том если ссылка ведет на одну и ту же область в памяти то, учитывал бы это как равность. как то так.

а вы?
Ответить с цитированием
  #5 (permalink)  
Старый 25.12.2011, 19:33
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Livaanderiamarum
сравнил бы значения ключей.
Ну вот сравните значения ключей для моего примера.
Ответить с цитированием
  #6 (permalink)  
Старый 25.12.2011, 19:35
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Livaanderiamarum,
вот честно,я абсолютно непониме ... то ли лыжи то ли я....
вы виндовс на js пишите? если нет-то для чего всё это?
для игры под ай? дак это там не понадобится. а если понадобилось-просмотрите ещё раз сегмент успешных игр. для чего разрабатывать то,что не будет пользоваться коммерческим успехом?
для самооценки повышения? самооценкой вы не себя ни семью не накормите.
а так если честно,моё мнение,вы муровод какой решил что буду заниматься вот этой задачей(а о ней вы рассказывали ) ищущий причину чтоб от неё отлынивать.
не зря ведь сказано-кто хочет ищет возможность,кто не хочет ищет причину. моё мнение-вы второй тип.
да и смена учётки чтоб снять минусовую карму-радикальный ход. не думали как это смотрится глазами других?
Ответить с цитированием
  #7 (permalink)  
Старый 25.12.2011, 19:36
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от B@rmaley.e><e Посмотреть сообщение
Ну вот сравните значения ключей для моего примера.
ты прочитал только фразу "Сравнил значения ключей" или весь мой текст? если не весь то прочитай весь.
Ответить с цитированием
  #8 (permalink)  
Старый 25.12.2011, 19:39
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Livaanderiamarum
1) вначале отыскиваются и сравниваются все примитивные значения, если разница не обнаружена,
var a=5+"";
var b=5;
alert(a);
alert(b);
alert(a==b);
alert(a===b);

и вы хотите сказать что они одинаковые?
Ответить с цитированием
  #9 (permalink)  
Старый 25.12.2011, 19:39
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от dmitriymar Посмотреть сообщение
Livaanderiamarum,
вот честно,я абсолютно непониме ... то ли лыжи то ли я....
я вообще не понял как ваш пост связан с вопросом про недочеты в операторе сравнения?
Ответить с цитированием
  #10 (permalink)  
Старый 25.12.2011, 19:41
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от dmitriymar Посмотреть сообщение
var a=5+"";
var b=5;
alert(a);
alert(b);
alert(a==b);
alert(b==a);
у вас не обьекты сравниваются а строка с числом. это не хэши, про которые мы говорим.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск