php, javascript und boolean

im berufspraktikum habe ich das framework der firma um 2 template engine plugins erweitert, die ich übermorgen im dev-meeting präsentieren werde. die verwendeten scriptsprachen sind php und javascript (genauer: die ajax-libraries prototype und scriptaculous) und die template engine dazu ist smarty. die umsetzung ist natürlich nicht ganz reibungslos abgelaufen - wo wäre da denn der lerneffekt? ;)

zuerst dachte ich mir, mein laptop ist einfach nur stur, doch ich weiß ja, dass das problem meist davor sitzt ;)

als php-programmierer bin ich gewohnt boolsche variablen statt durch
if($bool==true) {
// some code
} else {
// another code
}
mit der kürzeren schreibweise
if($bool) {
// some code
} else {
// another code
}
zu überprüfen.

naja, wenn ich ehrlich bin, tendiere ich eigentlich mehr zu
($bool?/* some code */:/* another code */);

in javascript ist das nicht anders - außer eben, dass die $-zeichen bei den variablen fehlen. soviel zur syntax. bei den rückgabewerten gibt es jedoch einen unterschied.

php-code
$a = true;
$b = false;

// in php wird true als 1 ausgegeben und false gar nicht
echo $a; // 1
echo $b; //

javascript-code
var a = true;
var b = false;

// in javascript hingegen wird entsprechend true oder false ausgegeben
document.write(a); // true
document.write(b); // false

ein boolscher wert kann in javascript auch mittels new Boolean() gesetzt werden [beispiele].

hierbei ist aber zu beachten, dass die variable dann kein boolean sondern ein object ist.

javascript-code
var c = new Boolean(true);
var d = new Boolean(false);

document.write(typeof a); // boolean
document.write(typeof b); // boolean
document.write(typeof c); // object
document.write(typeof d); // object

wenn jetzt die variable mit new Boolean() gesetzt wurde, liefert die gekürzte schreibweise ein anderes ergebnis als bei der direkten initialisierung mit true oder false. bei boolean wird auf true oder false geprüft - bei object, ob es null bzw leer ist oder nicht.

javascript-code
(a?document.write('true'):document.write('!true')); // true
(b?document.write('true'):document.write('!true')); // !true
(c?document.write('true'):document.write('!true')); // true
(d?document.write('true'):document.write('!true')); // true

(a==true?document.write('true'):document.write('!true')); // true
(b==true?document.write('true'):document.write('!true')); // !true
(c==true?document.write('true'):document.write('!true')); // true
(d==true?document.write('true'):document.write('!true')); // !true

durch die template engine ist es mir nicht gelungen einen boolschen wert zu übergeben. dadurch versuchte ich die variable mittels new Boolean("false") zu befüllen. deshalb kam auch true heraus, wo ich eigentlich ein false erwartet habe (siehe variable d). sogesehen war es ja richtig, da die variable einen wert hatte und nicht null oder leer war.

es sind eben solche kleinen feinheiten, die den unterschied zwischen den verschiedenen scriptsprachen machen und auch den aufenthalt vor dem computer verlängern ;)

mfg mailo

Trackback URL:
https://mailo.twoday.net/stories/5180408/modTrackback

user status

Du bist nicht angemeldet.

archiv

September 2008
Mo
Di
Mi
Do
Fr
Sa
So
 1 
 3 
 4 
 5 
 7 
 8 
10
12
13
14
15
17
18
19
20
22
23
24
25
27
28
29
30
 
 
 
 
 
 

hinweis

die in diesem blog enthaltenen beiträge dienen ausschließlich dem informationszweck!

der autor übernimmt KEINE HAFTUNG für jeglichen missbrauch dieser informationen!

latest comments

Kumpulan Cerita Seks...
Kumpulan Cerita Seks Dewasa Terbaru 2017 Cerita Sex...
Cerita Sex (Gast) - 27. Feb, 02:58
St Patricks' Day Symbols...
The parade has more than 150,000 participants and attracts...
st patricks day t shirt (Gast) - 23. Feb, 14:08
John
Exclusively at Target 42 Bluray Combo Pack with exclusive...
Smithk112 (Gast) - 25. Mai, 20:10