Pull to refresh

Comments 50

А что не так с результатом? Чем ноль отличается от пустой строки?
был бы шарп — сослалась бы на тип данных. Но тут этот фокус не пройдет.
Встречный вопрос: почему ноль эквивалентен пустой строке?
ну ноль в памяти хранится как ноль и строка как ноль, разница только в типе данных, а == не подразумевает сравнение типов данных, вот отсюда и true
javascript:alert(0=='')
из той же оперы
javascript:alert(0==false)

это все же по-моему не верно. хоть и имеет место быть.
в C# вообще вылетит ошибка, что нельзя сравнивать переменные разных типов на равенство (==)
Ruby, как истиный дже дай, выплюнет false, так как 0 — это объект-число, а "" — объект строка. Поэтому не правда, что пустая строка равна нулю.
PHP 5 вроде вернет тру

я все же за то, что 0 != ""
какое отношение имеют убогие сишные функции для работы со строками к интерпретируемому языку не поддерживающему ни однобайтные кодировки, ни однобайтные числа?
замечательно.
но все таки почем 0=="" — истина?
Извините за выдирание из контекста, но
Истина не продаётся.
ну, 0 и пустая строка это по-сути очень разные вещи.

Вот за такие приколы не люблю динамическую типизацию…
UFO landed and left these words here
что не отменяет факта того, что 0 и пустая строка — очень разные вещи.
Что не отменяет необходимости сначала изучить язык.
Оператор == сравнивает с приведением типов.
Т.е. 0 приводится к строке ""? А к какой строке приводится 1? А как привести 0 к строке «0»?
Пардон за глупые вопросы, я не в курсе, мне интересно, почему так.
Не совсем. Пустая строка приводится к false, строка «1» приводится к 1, строка «0» — к 0. Потом 1 к true, 0 к false. Это все следует прочесть в любом учебнике по языку.
На вопрос, почему так, ответ простой — так сложилось. Не слишком логично, да.
Т.е. в данном случае оба приводятся к false и проверка проходит?
В данном — это как в самом посте? Да, так. Идите уже учебник читать, право! :)
деточка, а ты сама этот учебник открывала? или только на картинки любовалась?
Не хамите. Я PHP не знаю и знать не собираюсь, был чисто интерес.
А я думал, мы про Javascript. А оно вот как.
3 часа ночи, я пост не перечитывал, ниже есть разговор и про PHP. Javascript, так javascript. Тогда конечно можно и похамить.
То есть в три часа ночи влезть в ветку обсуждений про незнакомый язык, даже не зная, про какой именно — это нормально, а отсылка к авторитетным источникам (а то вон сверху намекают, что я заблуждаюсь) — это хамство. Записал, спасибо.
Я вас никуда не отсылал, я задал один вопрос, на второй вы мне язвительно «посоветовали» читать учебник.
Если вас кто-то куда-то отослал, срывайтесь или на стене, или на том, кто отослал, а не хамите.
Отсылка к авторитетному источнику — именно мой вам совет читать учебник. Обсуждение частностей незнакомого языка никому ничего не даст.
Срываетесь пока только вы. Не знаю, право, из-за чего.
Вы не отсылали к источнику, вы сказали «Идите уже учебник читать, право!». Если на прямой вопрос, требующий ответа «да/нет» у вас это называется «отсылка к авторитетному источнику», то у меня это называется хамство, да.
Сомневаюсь, что ответить «да» для вас было труднее, а читать учебник для ответа на один этот вопрос — черезчур.
Затем стоило мне ещё указать, в какую ветку мне заходить и какие вопросы задавать.
Учебник — это источник? Да/нет?
Учебник — это оскорбительно? Да/нет?

В том, что именно конкретный сетевой персонаж считает, а что не считает хамством, предмета дискуссии не вижу.
Да. Нет. Только отсылки нет.
Учебник — это авторитетный источник? Вы сказали, что отослали к авторитетному. Любой авторитетен?

Не надо делать вид, что вы не отличаете
> Идите уже читайте учебник
> Прочтите учебник Василия М. Петрова «Javascript для начинающих»
Второе — отсылка. Первое — нет.
Сухой остаток: хамство в данном случае от не-хамства отличается наличием ссылки, так?
Очевидно, интонацией.
Очевидно, интонация на письме не передается, ее додумывает читатель.
Согласен, задача хорошего писателя — заставить его додумать нужную интонацию, но я на такие лавры не претендую.
А при чем здесь динамическая типизация?

это проблемы слабой типизации в конкретных языках (php, javascript), а не динамической.
дело тут не в динамической типизации. Все же это баг не баг но самого оператора сравнения.
Вы не путайте тёплое с мягким, как говаривал Бобук.
if(""){
alert("-");
} else {
alert("!");
}

if(0){
alert("-");
} else {
alert("!");
}

Про php такие топики скачут постоянно. Про это немного есть тут.
Ещё например в Java == вообще не рекомендуют использовать — только .equals().
UFO landed and left these words here
Простите, но по ссылке — херня.

Очевидно, авторы не знают, что op_Equality для строки — это все тот же вызов Equals. Но где-то услышали, что «не рекомендуют», и решили у себя тоже написать. И причину не объяснили.

А не рекомендуют, в основном, от того, что можно опечататься и вместо "==" написать "=", в результате чего исказится логика.
Кстати, все приличные анализаторы кода показывают предупреждение «assignment in conditional operator», поэтому если писать не в блокноте, то ничего страшного.
UFO landed and left these words here
Не забудьте, что есть еще и "==="
В общем, RTFM. :)
UFO landed and left these words here
Мда…

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

Ну, а во-вторых, с точки зрения здравого смысла не улавливаю, почему
Пустой или состоящий из одних пробелов СтроковойЧисленныйЛитерал преобразует в +0.

По-моему, логичнее было бы возвратить NaN, разве нет?
Зачем NaN, лучше ноль, он счёту не помешает.
тогда и «xyz» тоже к нулю должно приводиться, дабы счёту не мешать ;-)
Потому что NaN однозначно указывает, что на входе какая-то фигня.
А с нулем еще надо дополнительно проверять, действительно ли там ноль, или 10 пробелов.
Автор, есть такое понятие, как weak typing. Слабая типизация.
Было бы не равно, а ошибка, если была бы strong typing.

А есть еще static и dynamic typing, но это уже не относится к делу.
Only those users with full accounts are able to leave comments. Log in, please.