Naukę języka programowania zaczynamy przeważnie od poznania podstawowych konstrukcji: sposobu deklarowania zmiennych, pętli, instrukcji warunkowych. Wtedy często pojawia się pytanie, które wartości są w wyrażeniach logicznych traktowane jako true
, a które jako false
? O ile w językach typu Java/C# sprawa jest dość prosta, bo większość wartości nie konwertuje się do typów boolean, to w przypadku języków skryptowych każdy z nich rządzi się innymi prawami.
Poniżej przedstawiam porównanie kilku z nich: JavaScript, ActionScript, Ruby. Linearne przełożenie niektórych wartości nie jest w 100% możliwe, np. zmienne niezdefiniowane – w JavaScript istnieje słowo kluczowe „undefinied”, natomiast w Ruby nie ma możliwości ustanowienia zmiennych niezdefiniowanych.
Argument | JavaScript | Ruby | ActionScript |
0 | false | true | false |
-1 | true | true | true |
5 | true | true | true |
„” | false | true | false |
„string” | true | true | true |
” „ | true | true | true |
null | false | false | false |
undefinied | exception | exception | false |
var x (uninitialized) | false | exception | false |
new Object (initialized) | true | true | true |
NaN | false | true | false |