Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   e=!!e; //Зачем? (https://javascript.ru/forum/misc/75780-e%3D-e%3B-zachem.html)

torsar 05.11.2018 19:17

e=!!e; //Зачем?
 
Сабж.

рони 05.11.2018 19:25

torsar,
чтобы e стало Boolean.
Логическое преобразование

j0hnik 05.11.2018 19:47

почти то же самое что и
e = Boolean(e)

Aetae 05.11.2018 19:54

На самом деле не за чем. В любом случае когда e будет использоваться как boolean оно и станет автоматически boolean по тем же самым правилам.
Чисто паранойи ради, разве что.

j0hnik 06.11.2018 00:36

Aetae,
alert('0' == !!'0');

вот вам и исключение

j0hnik 06.11.2018 00:39

console.log(true == !!'0');
console.log(true == '0');


расписал чтобы понятней было ;)

Aetae 06.11.2018 02:44

Только так делают опять же только параноики.)

j0hnik 06.11.2018 03:51

эх... параноики :blink:

MallSerg 06.11.2018 21:15

Цитата:

Сообщение от torsar (Сообщение 497914)
Сабж.

Это явное приведение типа не явным способом.(просто так короче)
Цитата:

Только так делают опять же только параноики.)
Некоторые операции над разными типами производятся по разному.
<script>
function sum1 (a,b,c){
    return a+b+c;
};
function sum2 (a,b,c){
    return Number(a) + Number(b) + Number(c);
};
alert ( sum1 (1,"1",1) );
alert ( sum2 (1,"1",1) );
</script>

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

Несколько примеров из разряда отгадай какой вывод будет у выражения.
true + false
12 / "6"
"number" + 15 + 3
15 + 3 + "number"
[1] > null
"foo" + + "bar"
'true' == true
false == 'false'
null == ''
!!"false" == !!"true"
[‘x’] == ‘x’
[] + null + 1
0 || "0" && {}
[1,2,3] == [1,2,3]
{}+[]+{}+[1]
!+[]+[]+![]
new Date(0) - 0
new Date(0) + 0
(Нагуглено на странице )


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