Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Присваивания условия. (https://javascript.ru/forum/misc/18551-prisvaivaniya-usloviya.html)

nyols 06.07.2011 12:19

Присваивания условия.
 
Очень часто в Javascript можно заметить подобные строчки.
var myVar = myVar || 'text';

Если переменная myVar не определена, то в качестве значения она получит строку 'text'

В PHP подобная конструкция не работает, то есть если написать:
$_POST['myVar'] = $_POST['myVar'] || 'text';

То после такой строки $_POST['myVar'] будет равен 1 (единице, то есть true)

Почему в PHP так не работает, или же наоборот почему в JS не присваивается значения условия ?

Kolyaj 06.07.2011 12:22

Потому что семантика этих операторов в PHP и в JavaScript разная.

nyols 06.07.2011 12:25

А что такое семантика и чем она отличается ?))

ksa 06.07.2011 12:28

Цитата:

Сообщение от nyols
почему в JS не присваивается значения условия ?

Потому как в доке написано
Цитата:

expr1 || expr2

Возвращает expr1, если оно может быть преобразовано к true; в ином случае возвращает expr2.
http://javascript.ru/boolean-operators

А expr2 в нашем случае - 'text'

Цитата:

Сообщение от nyols
Почему в PHP так не работает

Например у нас в Cache просто вылетит на ошибку, что переменная не определена... :D

nyols 06.07.2011 12:30

Я то думал что все языки программирования одинаковые, меняется только синтаксис и набор функций)))
Оказывается что и логика у них разная может быть)

ksa 06.07.2011 12:31

Цитата:

Сообщение от nyols
А что такое семантика

Луче и не ответить... :)
http://slovari.yandex.ru/~книги...ейская/

ksa 06.07.2011 12:32

Цитата:

Сообщение от nyols
Оказывается что и логика у них разная может быть)

Это не логика...

Цитата:

Сообщение от nyols
Я то думал что все языки программирования одинаковые, меняется только синтаксис и набор функций

Так и есть.

nyols 06.07.2011 12:47

Цитата:

Сообщение от ksa
Луче и не ответить...
http://slovari.yandex.ru/~книги...�ейская/

:) :D

А, еще такой вопрос про оператор сравнения
Чем отличается == и === ?
И в каких случаях нужно использовать именно === ?
А вообще где можно почитать про такие тонкости на JS ?

Цитата:

Сообщение от ksa
Это не логика...

Почему не логика, получается что JS думает по другому, логично же ведь что бы возвращал true/false а не что то другое))

ksa 06.07.2011 12:55

Цитата:

Сообщение от nyols
получается что JS думает по другому

Нет. :no:
Т.к. "думает" он как и все остальные языки - согласно своему описанию/документации. :)

Цитата:

Сообщение от nyols
логично же ведь что бы возвращал true/false а не что то другое

Кому логично? :)
Мне например логично прочитать как работает оператор и использовать все его возможности...
Правда я не сторонник использования каких-то особенных загибонов язвка, которые и понять-то не все смогут.
Но это про вообще, а не JS в частности... :)

Цитата:

Сообщение от nyols
Чем отличается == и === ?

Ну косинус же! (с) :D
http://javascript.ru/comparison-operators

Цитата:

Сообщение от nyols
А вообще где можно почитать про такие тонкости на JS ?

Да хоть тут...
http://javascript.ru/manual

trikadin 06.07.2011 14:14

И вот тут. Про все операторы)


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