KOMPOOS.NL

JSLint - de strengste js-validator ter wereld

home ยป jslint.html

sitemap | GA TERUG NAAR DE JAVASCRIPT INDEX


klik hier voor de laatste versie van JSLint

Vandaag is jouw script foutloos, morgen niet meer :)

Het is 'een sport' op de kompoos.nl om alle javascripts foutloos te maken. Maar om ze "foutloos" te houden is een flinke opgaaf...
Douglas Crockford verandert, met de regelmaat van de klok, de "spel-regels" van het foutloos zijn. Volkomen terecht overigens. Als jouw code valideert volgens zijn opvattingen, weet je zeker dat jouw scripts in werkelijk alle browsers, en onder alle omstandigheden, probleemloos zullen werken. Elk script op de kompoos.nl is door de validator "heen-gehaald" en is foutloos bevonden. Maar één keer valideren en dan op jouw lauweren gaan rusten is bij Douglas geen optie!
Op het moment van het maken van deze pagina, zijn er weer de nodige zaken "aangescherpt". Ik zal een voorbeeld geven. De volgende code:


/*global document: false */
/*global Maak_grafiek: true */
var schuin_invert;
Maak_grafiek = function (width, height) {
    var deze_grafiek = this, y, x, temp, line,
        grafiek_element = document.createElement("b");
    document.body.appendChild(grafiek_element);
    grafiek_element.className = "grafiek_body";
    grafiek_element.style.width = width;
    grafiek_element.style.height = height;
    this.teken_punt_grafiek = function (x, y) {
        var q = document.createElement("b");
        q.className = "q";
        q.style.left = x + "px";
        q.style.top = y + "px";
        grafiek_element.appendChild(q);
    };
    this.drawLine = function (x1, y1, x2, y2) {
        if (x1 === x2 && y1 === y2) {
            deze_grafiek.teken_punt_grafiek(x1, y1);
            return;
        }
        if (x1 > x2) {
            temp = x1;
            x1 = x2;
            x2 = temp;
            temp = y1;
            y1 = y2;
            y2 = temp;
        }
        if (x1 === x2) {
            if (y1 > y2) {
                temp = y1;
                y1 = y2;
                y2 = temp;
            }
            line = document.createElement("b");
            line.className = "grafiek_lijn_verticaal";
            line.style.top = y1 + "px";
            line.style.left = x1 + "px";
            line.style.height = (y2 - y1 + 1) + "px"; 
            grafiek_element.appendChild(line);
        } else if (y1 === y2) {
            line = document.createElement("b");
            line.className = "grafiek_lijn_horizontaal";
            line.style.top = y1 + "px";
            line.style.left = x1 + "px";
            line.style.width = (x2 - x1 + 1) + "px";
            grafiek_element.appendChild(line);
        } else {
            var schuin = (y1 - y2) / (x1 - x2);
            if (Math.abs(schuin) <= 1) {
                for (x = x1; x <= x2; x = x + 1) {deze_grafiek.teken_punt_grafiek(x, y1 + ((x - x1) * schuin)); }
            } else {
                if (y1 > y2) {
                    temp = x1;
                    x1 = x2;
                    x2 = temp;
                    temp = y1;
                    y1 = y2;
                    y2 = temp;
                }
                schuin_invert = (x1 - x2) / (y1 - y2);
                for (y = y1; y <= y2; y = y + 1) {deze_grafiek.teken_punt_grafiek(x1 + ((y - y1) * schuin_invert), y); }
            }
        }
    };
};

levert (alléén in JSLint natuurlijk) de volgende foutmeldingen op:


Error:

Problem at line 5 character 5: Missing 'use strict' statement.

var deze_grafiek = this, y, x, temp, line,

Problem at line 41 character 54: Unexpected '(space)'.

line.style.height = (y2 - y1 + 1) + "px"; 

Wel, dat is natuurlijk snel opgelost door de overbodige spatie te verwijderen (achter + "px"; ) en in de functie "Maak_grafiek" de use strict; toe te voegen.


Maak_grafiek = function (width, height) {
    'use strict';
    var deze_grafiek = this, y, x, temp, line,

Voor alle duidelijkheid:
Vanaf nu moeten alle javascript-procedures "strict" gebruiken, en alle overbodige spaties (of te weinig spaties bij het inspringen) worden genadeloos afgestraft.
Het punt wat ik op deze pagina wil maken is het volgende.
Op ons gemakje gaan we alle (duizenden) scripts weer aanpassen aan de nieuwe regels. In de tussentijd zijn natuurlijk alle scripts nog steeds van de allerhoogste kwaliteit. Het (verkeerd) inspringen van een regel heeft echt geen nadelige gevolgen voor het functioneren van een script... Zie alles maar in het licht van het streven van een paar "fanatici" (daar hoort de kompoos.nl echt wel bij) om code volkomen foutloos te maken voor de allerstrengste norm(en) die er bestaan !!