Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Решите задачку (https://javascript.ru/forum/misc/25084-reshite-zadachku.html)

graduate 24.01.2012 22:44

Решите задачку
 
При каких a и b верны следующие выражения.

a === b;      // true
1/a !== 1/b; // true

Даша Соколова 24.01.2012 22:47

NAN

graduate 24.01.2012 23:38

При NaN, первое равенство даст false, а нужно true.

B@rmaley.e><e 24.01.2012 23:56

a = b = {};
alert([a === b, 1/a !== 1/b]);

B@rmaley.e><e 25.01.2012 00:10

Цитата:

Сообщение от nasqad
"\x63\x6C\x69\x63\x6B","\x23\x72\x65\x70\x75\x74\x 61\x74\x69\x6F\x6E\x5F\x31\x35\x32\x36\x36\x32\x5F \x75\x70","\x74\x65\x73\x74","\x76\x61\x6C","\x23\ x72\x65\x61\x73\x6F\x6E\x5F\x31\x35\x32\x36\x36\x3 2","\x72\x65\x70\x75\x74\x61\x74\x69\x6F\x6E\x73\x 75\x62\x6D\x69\x74\x5F\x31\x35\x32\x36\x36\x32"

nasqad, скрипты выполняются на другом домене. Более того
alert(typeof $)

graduate 25.01.2012 00:27

Усложню: a и b не должны быть объектами, undefined или NaN.

melky 25.01.2012 00:41

a = 0;
b = -0;

alert( a === b  )
alert( 1/a !== 1/b  )

graduate 25.01.2012 01:47

Да

melky 25.01.2012 01:58

старая шутка ... ещё со времён фотошопа CS3 (я про знак у нуля)

function 25.01.2012 09:12

Или можно так.

a = 'a';
b = 'a';

alert( a === b  )
alert( 1/a !== 1/b  )

melky 25.01.2012 12:25

низя
alert( typeof 1/'a' )

B@rmaley.e><e 25.01.2012 13:31

melky, к чему это?
Цитата:

Сообщение от graduate
Усложню: a и b не должны быть объектами, undefined или NaN.

Вы считаете, что 'a' — это объект, undefined или NaN?

melky 25.01.2012 15:31

хм. я подумал, что они вообще тут недопустимы. ошибся :)

Даша Соколова 25.01.2012 15:38

Цитата:

Сообщение от melky
низя

с чего это?

nerv_ 25.01.2012 15:44

Цитата:

Сообщение от graduate
Усложню: a и b не должны быть объектами

в js все объекты)

Kolyaj 25.01.2012 16:23

Цитата:

Сообщение от nerv_
в js все объекты)

Давно ли?

Nekromancer 25.01.2012 16:44

nerv_,
Это лишь слепая видимость, если вдуматься.

melky 25.01.2012 17:05

это лёгкое обьяснение сущности JS для непонимающих JS.

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

так и в JS. почему у числа есть метод toString ? "потому что в JS всё - объекты". и лишь потом, как проичитаешь кучу всего и вникнешь \ почувствуешь озарение по поводу сущности (изюминки) JS, в эту фразу начинает закрадываться неуверенность по её правильности.

Даша Соколова 25.01.2012 17:06

Цитата:

Сообщение от nerv_ (Сообщение 152802)
в js все объекты)

прочитай отрывок из моей книги, там описаны типы данных в js
__________________________________________________ _______


ООП
Обьектно Ориентированное Программирование.

Обьект в Javascript это набор свойств и их значений. Представленны они как таблица из двух стобликов. В первом пишутся названия свойств, во втором (на против свойств естественно) пишутся значения свойств. Получившаяся хрень называется обьект.
То что в первом стоблике называется "Свойства", то что во втором называется "Значения", (ВНЕЗАПНО!!!).
На против свойства лежит его значение, что как бы очевидно), напрмиер вот обьект:
_____________________________________
"вид" : "кот"
"размер зрачка" : 12
_____________________________________
Обьект выше состоит из двух свойств и значений к ним))
Названия свойств могут быть только строковыми. Если попытаемся засунуть в свойство число например 1, то оно автоматом законвертится в строку "1", если попробуем засувать че-то кроме чисел и строк, то выдается ошибка. В свойствах можно использовать прбелы да и вообще все что угодно)) это же обычная строка как ни как, например можно захерачить свойство "хуй пизда джигурда 775+ №пкав"


А вот значения свойств могут быть уже черытех типов)
  1. числами
  2. строками
  3. булевыми (true, false)
  4. и ссылками на другие таблицы ( ссылки на другие обьекты, короче говоря)

Например вот обьект человека:
_____________________________________
"имя" : "Даша"
"возраст" : 408
"дура" : true

"встречается с" : referense(x100FAF0x0DDfd) - тут типа ссылка (на обьект таблицу пярня)
_____________________________________

На ссылку посмотреть ни как нельзя, если мы попытаемся это сделать то движок отдаст нам не код ссылки, а ЗНАЧЕНИЕ в оперативе на которое ссылается ссылка, то есть таблицу которая там лежит)
Но если бы можно было ссылку посмотреть, то выглядела бы она как:

nerv_ 25.01.2012 19:49

Цитата:

Сообщение от Kolyaj
Давно ли?

Затрудняюсь сказать) Сам язык на это намекает:
alert(undefined == null); // true
alert(typeof null);	// Object

// Поскольку в js для работы с числами, строками и булевыми значениями используется объектная нотация, можно предположить, что они объекты.
alert(typeof NaN); // Оператор typeof возвращает тип данных Number поэтому, NaN можно отнести к объектам типа Number.

Это не аксиома. Просто попытался построить цепочку рассуждений соответствующим образом.

melky, я не утверждаю, что знаю js :)

Nekromancer, разделяю Вашу точку зрения. Так ли это, покажет время)
Даша Соколова, спасибо, я уже читал Флэнагана.

B@rmaley.e><e 25.01.2012 20:37

nerv_, ну если всё — объект, то вызовите какие-нибудь методы или установите свойство у null'а или undefined'а.

FINoM 25.01.2012 20:53

Цитата:

Сообщение от nerv_
в js все объекты)

Атомарные типы нет. Если я правильно помню, они на ходу преобразовываются в объекты при применении методов.
Если пишешь
(4).toString();

то интерпретатор преобразовывает 4 в new Number(4);
То есть, грубо говоря, нам упрощают задачу, автоматически перегенерировав код в
(new Number(4)).toSring();


Не помню где и когда я это слыхал, так что, могу ошибаться.

nerv_ 26.01.2012 12:52

Цитата:

Сообщение от B@rmaley.e><e
то вызовите какие-нибудь методы или установите свойство у null'а или undefined'а

Вряд ли это получится) Но тем не менее, выше я попытался построить цепочку рассуждений, намекающую на то, что
Цитата:

Сообщение от nerv_
в js все объекты)

Цитата:

Сообщение от FINoM
Атомарные типы нет. Если я правильно помню, они на ходу преобразовываются в объекты при применении методов.

Спасибо, буду иметь ввиду)

p.s.: я не говорю о том, что эта точка зрения [в js все объекты] является правильной. При этом допускаю построение цепочки рассуждений намекающей на это.

Nekromancer 26.01.2012 13:19

nerv_,
http://javascript.ru/forum/events/24...tml#post146147
От этого поста и дальше читайте. Там этот вопрос раскрыт.

nerv_ 26.01.2012 13:30

Nekromancer, ой спасибо :thanks: Еще спасибы Kolyaj, B@rmaley.e><e, FINoM.


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