Uso delle virgole in javascript

di il
12 risposte

Uso delle virgole in javascript

Sto esaminando un codice in javascript ma non capisco la sintassi:
<script type="text/javascript">
           test('Function Scope', function () {
                var testDeclaration = false,foo;
                // This function gets erroneously overridden in IE8.
                function bar(arg1, bleed) {
                    if (bleed) {
                        ok(false,console.log(
                                'Declaration bar() should NOT be callable from'
                                + ' inside the expression.'));
                    } else {
                        ok(true,console.log(
                                'Declaration bar() should be called outside the'
                                + ' expression.'));
                    }
                    testDeclaration = true;
                }
                foo = function bar(declaration, recurse) {
                    if (recurse) {
                        ok(true,console.log(
                                'Expression bar() should support scope safe'
                                + ' recursion'));
                    } else if (declaration === true) {
                        ok(true,console.log(
                                'Expression bar() should be callable via foo()'));
                        bar(false, true);
                    } else {
                        // Fails in IE8 and older
                        ok(false,console.log(
                                'Expression bar() should NOT be callable outside'
                                + ' the expression'));
                    }
                };
                bar();
                foo(true);
                // Fails in IE8 and older
                ok(testDeclaration,console.log(
                        'The bar() declaration should NOT get overridden by'
                        + ' the expression bar()'));
            });
        </script> 
precisamente non capisco quando devo mettere la virgola e quando devo mettere il punto e virgola. Dopo testDeclaration quella virgola al posto del punto e virgola mi manda in panico. Se sostituisco la , che c'è dopo false con il ; il codice smette di funzionare.

12 Risposte

  • Re: Uso delle virgole in javascript

    Quelle sono due variabili ... puoi scrivere

    var testDeclaration = false;
    var foo;

    oppure, come è scritto in quella riga

    var testDeclaration = false, foo;
  • Re: Uso delle virgole in javascript

    oregon ha scritto:


    Quelle sono due variabili ... puoi scrivere

    var testDeclaration = false;
    var foo;

    oppure, come è scritto in quella riga

    var testDeclaration = false, foo;
    ma anche secondo me però allora perché se sostituisco la , con il ; nella console non leggo più nulla? come faccio a capire quando devo mettere la virgola e quando mettere il punto e virgola?

    per intenderci se scrivo:
    var testDeclaration = false;
    foo;
    senza il var il codice da errore... con il var invece funziona
  • Re: Uso delle virgole in javascript

    Ovvio che con var funziona e senza non funziona. Devi indicare che foo è una variabile, no?

    E' sintassi C like niente di nuovo ...

    E poi, non stai studiando dal libro ? Non hai letto come si dichiarano le variabili ?
  • Re: Uso delle virgole in javascript

    Non è come pensi, il libro è un libro di javascript avanzato e prima di iniziare a leggerlo ho dovuto leggermi una guida su html.it che se non ricordo male diceva che le variabili possono anche non essere inizializzate infatti questo codice qui funziona alla perfezione:
    <script type="text/javascript">
               test('Function Scope', function () {
                    var testDeclaration = false;
                    // This function gets erroneously overridden in IE8.
                    function bar(arg1, bleed) {
                        if (bleed) {
                            ok(false,console.log(
                                    'Declaration bar() should NOT be callable from'
                                    + ' inside the expression.'));
                        } else {
                            ok(true,console.log(
                                    'Declaration bar() should be called outside the'
                                    + ' expression.'));
                        }
                        testDeclaration = true;
                    }
                    foo = function bar(declaration, recurse) {
                        if (recurse) {
                            ok(true,console.log(
                                    'Expression bar() should support scope safe'
                                    + ' recursion'));
                        } else if (declaration === true) {
                            ok(true,console.log(
                                    'Expression bar() should be callable via foo()'));
                            bar(false, true);
                        } else {
                            // Fails in IE8 and older
                            ok(false,console.log(
                                    'Expression bar() should NOT be callable outside'
                                    + ' the expression'));
                        }
                    };
                    bar();
                    foo(true);
                    // Fails in IE8 and older
                    ok(testDeclaration,console.log(
                            'The bar() declaration should NOT get overridden by'
                            + ' the expression bar()'));
                });
            </script> 
    Questo pure (ho tolto "foo" e anche "var")
    <script type="text/javascript">
               test('Function Scope', function () {
                    testDeclaration = false;
                    // This function gets erroneously overridden in IE8.
                    function bar(arg1, bleed) {
                        if (bleed) {
                            ok(false,console.log(
                                    'Declaration bar() should NOT be callable from'
                                    + ' inside the expression.'));
                        } else {
                            ok(true,console.log(
                                    'Declaration bar() should be called outside the'
                                    + ' expression.'));
                        }
                        testDeclaration = true;
                    }
                    foo = function bar(declaration, recurse) {
                        if (recurse) {
                            ok(true,console.log(
                                    'Expression bar() should support scope safe'
                                    + ' recursion'));
                        } else if (declaration === true) {
                            ok(true,console.log(
                                    'Expression bar() should be callable via foo()'));
                            bar(false, true);
                        } else {
                            // Fails in IE8 and older
                            ok(false,console.log(
                                    'Expression bar() should NOT be callable outside'
                                    + ' the expression'));
                        }
                    };
                    bar();
                    foo(true);
                    // Fails in IE8 and older
                    ok(testDeclaration,console.log(
                            'The bar() declaration should NOT get overridden by'
                            + ' the expression bar()'));
                });
            </script>
  • Re: Uso delle virgole in javascript

    giannino1995 ha scritto:


    Non è come pensi
    Ma COSA non è come penso? Che dici?
    il libro è un libro di javascript avanzato
    Leggi libri "avanzati" ma non hai le basi ... dovresti chiarirti le idee ...
    possono anche non essere inizializzate
    E chi ha mai detto il contrario??

    Hai chiesto indicazioni sulla sintassi di , e ; che non capivi e te l'ho spiegata.
    Parlare di inizializzazione (veramente è dichiarazione non inizializzazione) è un altro argomento.

    Come in tutti i tuoi thread, sei confuso e un po' supponente, ma la verità è che tutti i libri che leggi non ti serviranno a niente senza pratica vera nel mondo del lavoro e della produzione di software ...
  • Re: Uso delle virgole in javascript

    Ok, scusa per la terminologia io mi riferifo in effetti alla dichiarazione.

    Non capisco perché questi casi qui non funzionano:
    <script type="text/javascript">
               test('Function Scope', function () {
                    testDeclaration = false,
                    foo;
                    // This function gets erroneously overridden in IE8.
                    function bar(arg1, bleed) {
            <script type="text/javascript">
               test('Function Scope', function () {
                    testDeclaration = false,
                    foo,
            <script type="text/javascript">
               test('Function Scope', function () {
                    testDeclaration = false,
    ecc...

    Hai parlato di C ma io il C non lo conosco...

    Altro esempio che non capisco è questo:
    var lightBulbAPI = {
    toggle: function () {},
    getState: function () {},
    off: function () {},
    on: function () {},
    blink: function () {}
    };
    io avrei usato il ;

    se mi puoi enunciare la regola mi fai un grosso piacere...

    Detto in altro modo i codici mi sono chiarissimi, ho solo qualche problema con la sintassi!

    P.S.: Sto studiando javascript perché voglio creare un sistema di upload di file con queste specifiche:
    1.Caricare un numero di foto "infinite";
    2.Ridimensionare la foto da 100MB ad una dimensione accettabile;
    3.Caricare su sito documenti pdf di 100MB anche con un normale hosting;
  • Re: Uso delle virgole in javascript

    Giannino ... io quello che non capisco è come mai hai dubbi sulla sintassi e stai leggendo un libro avanzato ...

    Intanto non mi hai risposto alla domanda che ti avevo fatto

    "Non è come pensi" avevi detto ... ma non mi hai chiarito COSA non è come penso ...
    Non capisco perché questi casi qui non funzionano:
    Quando scrivi una linea di codice, questa inizia, segue certe regole e, in genere, si conclude con un ;

    Nello specifico, per la dichiarazione delle variabili, devi indicare

    var nomedellavariabile ;

    oppure

    var nomedellavariabile1, nomedellavariabile2, nomedellavariabilen ;

    Se NON scrivi var all'inizio ma qualcosa di diverso è considerato un errore di sintassi perché non si sa cosa tu volessi scrivere. Ma questo vale IN TUTTI I LINGUAGGI. Non so quale linguaggio tu abbia studiato ma ogni linguaggio ha le sue regole sintattiche e sono simili. Quindi ne deduco che NON hai studiato nessun linguaggio.

    Il fatto comunque è che NON devi chiedere queste cose basilari nei forum ma solamente STUDIARE da un libro DI BASE in cui queste cose sono spiegate bene e costituiscono le nozioni fondamentali per imparare qualsiasi linguaggio.
  • Re: Uso delle virgole in javascript

    Ahh ho capito, è come in java dunque. Però perché lightBulbAPI finisce senza il ; ? perché c'è una virgola? Io avrei messo il ; come qui:
         
                    };
                    bar();
                    foo(true);
    
  • Re: Uso delle virgole in javascript

    Di quale , parli ??
  • Re: Uso delle virgole in javascript

    oregon ha scritto:


    Di quale , parli ??
    var lightBulbAPI = {
    toggle: function () {},
    getState: function () {},
    off: function () {},
    on: function () {},
    blink: function () {}
    };
  • Re: Uso delle virgole in javascript

    Giannino ... ma sei sicuro di avere mai studiato javascript ?
  • Re: Uso delle virgole in javascript

    oregon ha scritto:


    giannino ... ma sei sicuro di avere mai studiato javascript ?
    Si e no, ho solo letto, non studiato. Ho dovuto leggere questa guida per poi riuscire a leggere questo libro.

    http://www.tecnichenuove.com/programmare-applicazioni-javascript.html

    ho rivisto ora gli Object literal e noto ora che in effetti le proprietà degli oggetti sono sempre divise da virgole, come per gli array, non avendo fatto molto esercizio faccio fatica a ricordare...
Devi accedere o registrarti per scrivere nel forum
12 risposte