Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> === что это и для чего оно нужно? === 
V
    Опции темы
t77
Дата 20.4.2009, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Доброе время суток.
Недавно, разбирая код, наткнулся на то, что раньше не видел...
А именно то, что в условии if, сравнение 2-ух значений с помощью ===.
Код

if(x === y)
{
   ...
}

Так вот, что это за сравнение и чем собственно оно отличается от сравнения == ?
Объясните мне пожалуйста на простом русском языке, что означает === ?
Зачем оно нужно если можно просто использовать typeof ?
Существует ли подобное в других языках программирования ?

PM MAIL   Вверх
ksnk
Дата 20.4.2009, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



t77, Это "равно, и такого-же типа".

Наиболее выразительный пример - из документации по strpos
Код

$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
   echo "The string '$findme' was not found in the string '$mystring'";
} else {
   echo "The string '$findme' was found in the string '$mystring'";
   echo " and exists at position $pos";
}


своими словами, из за "автоматического приведения" такие конструкции 0==false ''==false 0=='' всегда выдают истину. Чтобы не писать проверку по типам, считается более правильным придумать новую операцию.

Такое есть еще и в JavaScript, вероятно и в других языках без явного контроля типов.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
t77
Дата 20.4.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



То что такое есть и в PHP я понял...
А вот объяснение
Цитата

Чтобы не писать проверку по типам, считается более правильным придумать новую операцию.

несовсем...
Получается что сравнение по типам идентично === ?
И еще если можно пример на JavaScript...
Спасибо.
PM MAIL   Вверх
underW
Дата 20.4.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 22.9.2008

Репутация: 2
Всего: 3



Код

var s="57"; //тип string-строка
var n=57;   // тип number-число
if(s==n){alert('yes')} else {alert("no")} // выведет yes
if(s===n){alert('yes')} else {alert("no")} // выведет no



=== идентично сравнению по значению и по типу.

Это сообщение отредактировал(а) underW - 20.4.2009, 11:46
PM MAIL   Вверх
Aliance
Дата 20.4.2009, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Цитата(t77 @  20.4.2009,  11:25 Найти цитируемый пост)
Получается что сравнение по типам идентично === ?

не совсем. оператор === сравнивает не только по типу, но в первую очередь по значению.
Код

alert( 69 === 100 );

Выдаст false.

Можно сказать, что === представляет собой следующую функцию:
Код

function strictEqual( a, b )
{
    return ( a == b && typeof a == typeof b ) ? true : false;
}

PM MAIL WWW ICQ Skype   Вверх
t77
Дата 20.4.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Очень хорошие и ясные объяснения. smile 
Теперь все ясно!
Спасибо большое.

PM MAIL   Вверх
Aliance
Дата 20.4.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Напоминание на будущее: если вопрос решен, справа вверху есть ссылка "Пометить как решённый" - следует не забывать ею пользоваться ;)
PM MAIL WWW ICQ Skype   Вверх
t77
Дата 20.4.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0670 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.