DUzun's Web
Programare, proiecte personale, divertisment

DUzun it's ME
 
  
News
JavaScript "v1 ? v2 : v3" vs "v1 && v2 || v3"
 

JavaScript - un limbaj script foarte vestit pentru flexibilitatea și „puterea” sa de scriptare!

Deși inspirat din limbajul Java (care la rândul său este inspirat din C/C++), JavaScript (sau JS) are un mare plus de flexibilitate sintactică, dat fiind faptul că este un limbaj de tip script.

Iată un bun exemplu care îl face pe JS deosebit față de alte limbaje (chiar de timp script): operatorii logici „&&” și „||".

În limbajele tradiționale (C/C++, PHP, ș.a.) expresiile de genul „v1 && v2” sau „v1 || v2” se evaluează ca booleene (true sau false, 1 sau 0). E bine cunoscut faptul (cel puțin printre programatori) că orice valoare nenulă se evaluează ca true și orice valoare nulă (0, false, null, undefined, '') se evaluează ca false. Atunci de ce să forțăm expresiile de mai sus să se evalueze strict la aceste două valori booleene (true sau false)?! De ce să nu se păstreze valoarea inițială a operanzilor, care n-ar fi ea (null, undefined, '', <not nul>, ...).

Cred că ați prins firul, nu? JS așa si face, nu forțează pe nimeni și nimic, adică expresia „v1 && v2” ia valoarea „v1”, dacă v1 este o valoare nenulă și ia valoarea „v2”, dacă v1 e nul.

Exemplu:

var v = true && 'avioanele nu zboara';
alert(v); // v == 'avioanele nu zboara'
var u = true || 'avioanele zboara';
alert(u); // u == true
v = 123 && ''; // v == '', nu false, ci ''
u = 123 || ''; // u == 123, dar nu true
...

Folosind aceste proprietăți ale operatorilor logici specifice JS, putem emita operatorul ternar „?:” în felul următor:

Expresia „v1 ? v2 : v3” poate fi scrisă „v1 && v2 || v3”.

Dar atenție! Această emitație nu este identică cu operatorul ternar autentic. Iată cum se citesc expresiile de mai sus în limbajul omenesc:

„v1 ? v2 : v3” - dacă v1, atunci v2, altfel v3;

„v1 && v2 || v3” - dacă v1 și v2, atunci v2, altfel v3.

Ați prins firul? Sper că da!

După o mică analiză a ideilor și exemplelor expuse mai sus, conchidem că putem construi noi „operatori” logici în JS, care să răspundă necesităților noastre în fiecare situație concretă. Astfel putem scrie mai puțin cod și realiza mai multă funcționalitate - o trăsătură specifică JS și rar întâlnită în alte limbaje de programare.

Autor: Dumitru Uzun

  </> 12.08.2010

Aici acumulez programe şi algoritmi interesanti alcătuiţi de mine (cu mici excepţii) pe parcursul studierii unor limbaje de programare.

Cea mai mare parte din ele sunt realizate în Pascal. 

Nu am scopul creării unui curs specializat sau a descrierii detaliate a anumitor limbaje, ci doar prezint informaţii utile, plus ceva exemple interesante...

 

Răsfoitorul de fișiere (File Browser):

Codul sursă al programelor este organizat în mape şi fişiere.

Paginile care conțin cod sursă de programe de regulă au un răsfoitor de fișiere în partea stangă a paginii reprezentat de un bloc cu titlul „File Browser”.

Pentru a vizualiza un program sau conţinutul unei mape, faceţi click pe numele fişierului / mapei. Dacă fişierul nu este textual, el se va descărca automat, iar dacă este textual, conținutul lui se va afișa într-un bloc pe centrul paginii.

Pentru a descărca un fişier, faceţi click pe dimensiunea (size) lui.

arr_d Limba / Language


 


Flag Counter

arr_r Login