Mit Web 2.0 hält auch JavaScript Einzug in den Alltag des Java-Entwicklers. Einerseits glänzt JavaScript mit erlesenen ‚Good Parts’, andererseits warten befremdlichen Spracheigenheiten und puristische Entwicklungsmittel. Mit einem zwinkernden und einem ernsten Auge berichten wir Kurioses und Tückisches aus der Praxis und geben Schützenhilfe für die erfolgreiche Besiedelung dieser neuen Welt.
26. function makeAdder(a) {
return function(b) {
return a + b;
}
}
var x = makeAdder(5);
var y = makeAdder(20);
x(6); // returns 11
y(7); // returns 27
27. Akt I
In Javascript ist der Wert von „this“
abhängig von der Art des Aufrufs.
Aufruf
this
function
global object
undefined
object (Eigner der Methode)
Das „new“ object
argument
method
constructor
apply
40. a = 0.1;
b = 0.2;
c = 0.3;
(a + b) + c === a + (b + c)
?
Akt III
41. a = 0.1;
b = 0.2;
c = 0.3;
(a + b) + c === a + (b + c)
{false}
Akt III
42. a = 0.1 * 100;
b = 0.2 * 100;
c = 0.3 * 100;
(a + b) + c === a + (b + c)
{true}
Akt III
43. null ist ein object‚
Akt III
Warum:
Microsofts JScript Reverse Engineering
Wurde Standard, weil:
„ If we fix that, it could break an program – and at
Microsoft we can not tolerate that.“
44. var value = „0“;
if (value) {
magic();
}
?
Akt III
45. var value = „0“;
if (value) {
magic();
}
{true}
Akt III
47. function addHandler() {
var el = document.getElementById(‚el‘);
el.onclick = function() {
this.style.backgroundColor = ‚red‘;
}
}
48. Don't use closures unless you
really need closure semantics.
In most cases, non-nested
functions are the right way to go.
Eric Lippert, Microsoft
Akt III
56. Referenzen:
Mozilla Documentation Center (MDC) on Javascript
Secrets of Closures, Fronteers 2008, Stuart Langridge
ServerSide Javascript, Steve Yegge
YUI Theater,
Douglas Crockford on Javascript (Google Video)
Buch: „Javascript – The Good Parts“, Douglas Crockford
Kontakt:
eXXcellent solutions GmbH
Beim Alten Fritz 2
D-89075 Ulm
http://www.exxcellent.de/
Oliver Pehnke
(O.Pehnke@exxcellent.de)
Benjamin Schmid
(B.Schmid@exxcllent.de)