Cosa dovrebbe sapere ogni programmatore JavaScript? [chiuso]


368

C'è una serie di cose che ogni programmatore JavaScript dovrebbe sapere per poter dire "Conosco JavaScript"?

Risposte:


590

Non jQuery. Non YUI. Non (ecc. Ecc.)

I frame possono essere utili, ma spesso nascondono i dettagli a volte brutti di come JavaScript e DOM funzionino davvero da te. Se il tuo obiettivo è quello di poter dire "Conosco JavaScript", allora investire molto tempo in un framework è contrario.

Ecco alcune funzionalità del linguaggio JavaScript che dovresti sapere per capire cosa sta facendo e non lasciarti sorprendere, ma che non sono immediatamente ovvie per molte persone:

  • Quello object.prope object['prop']sono la stessa cosa (quindi puoi smettere di usare eval, grazie); che le proprietà dell'oggetto sono sempre stringhe (anche per le matrici); cosa for... inè per (e che cosa non lo è ).

  • Proprietà-sniffing; cos'è undefined(e perché ha un odore ); perché l' inoperatore apparentemente poco noto è vantaggioso e diverso da typeof/ undefinedcontrolli; hasOwnProperty; lo scopo di delete.

  • Che il Numbertipo di dati sia veramente un float; le difficoltà indipendenti dalla lingua nell'uso dei float; evitando la parseInttrappola ottale.

  • Scoping di funzioni nidificate; la necessità di utilizzare varnell'ambito che si desidera evitare globali accidentali; come gli ambiti possono essere usati per le chiusure; il problema del circuito di chiusura .

  • Come si windowscontrano le variabili e le proprietà globali ; come le variabili globali e gli elementi del documento non dovrebbero scontrarsi ma fare in IE; la necessità di utilizzare anche varnell'ambito globale per evitarlo.

  • Come la functiondichiarazione agisce per " sollevare " una definizione prima del codice che la precede; la differenza tra dichiarazioni di funzioni ed espressioni di funzioni; perché le espressioni di funzioni con nome non devono essere utilizzate .

  • Come funzionano veramente il costruttore, la prototypeproprietà e l' newoperatore; metodi per sfruttarlo per creare il normale sistema di classe / sottoclasse / istanza che si voleva effettivamente; quando si desidera utilizzare oggetti basati sulla chiusura anziché la prototipazione. (La maggior parte del materiale tutorial di JS è assolutamente terribile in questo; mi ci sono voluti anni per farlo capire bene.)

  • Come thisviene determinato al momento della chiamata, non associato; come di conseguenza il passaggio del metodo non funziona come ti aspetti da altre lingue; come chiusure o Function#bindpossono essere utilizzate per aggirare questo.

  • Altre caratteristiche di ECMAScript Fifth Edition come indexOf, forEache i metodi diArray programmazione funzionale su ; come riparare i browser più vecchi per essere sicuri di poterli usare; usandoli con espressioni di funzioni anonime incorporate per ottenere codice compatto e leggibile.

  • Il flusso di controllo tra il browser e il codice utente; esecuzione sincrona e asincrona; eventi che si attivano all'interno del flusso di controllo (ad es. focus) rispetto a eventi e timeout che si verificano quando il controllo ritorna; come chiamare un builtin apparentemente sincrono come alertpuò finire per provocare un rientro potenzialmente disastroso.

  • Come influenza lo scripting cross-window instanceof; come lo scripting cross-window influisce sul flusso di controllo tra diversi documenti; come postMessagesi spera risolverà questo.

Vedi questa risposta per quanto riguarda gli ultimi due elementi.

Soprattutto, dovresti visualizzare JavaScript in modo critico, riconoscendo che per ragioni storiche è un linguaggio imperfetto (anche più della maggior parte delle lingue) ed evita i suoi peggiori problemi. Il lavoro di Crockford su questo fronte merita sicuramente una lettura (anche se non sono d'accordo al 100% con lui su quali siano le "Parti buone").


80
Ahhhh, finalmente una risposta ponderata e approfondita. Se potessi +10, lo farei. Conoscere un framework non significa che è possibile programmare JavaScript in modo efficace.
Tim Down

6
Grazie mille per la risposta ben ponderata. Vorrei aggiungere che l'uso di un framework può essere davvero utile se sai come viene fatto. Dovresti imparare a fare queste cose da solo prima di ricorrere a un framework.
Javier Parra,

4
@Daniel: in realtà non è così, thisè vincolato in qualunque modo tu acceda ad esso. Provalo:, var o= {b: function(){alert(this===o);}};quindi o['b']();-> true. E se vuoi davvero strano, (o['b'])()-> true, ma (c= o['b'])()-> false, e solo in Mozilla, (true? o['b'] : null)()-> true. W, T e in effetti F.
bobince il

7
Che schifo! Non è come se conoscere tutte le diverse stranezze del browser ti rendesse un programmatore JS migliore. Forse più credito di strada tra i tuoi coetanei ... Le astrazioni rendono la vita più semplice e sono una parte essenziale di JS, quindi direi che conoscere un framework ti rende un programmatore JS migliore di uno che non lo fa e vuole fare le cose a lungo.
Vince Panuccio,

19
Sir Psycho: nota che nessuna di queste risposte menziona il DOM, che è ciò che le grandi biblioteche sono lì per aiutarti. Un framework non può proteggerti da nessuna delle cose menzionate qui . Questa roba è importante per chiunque esegua script del browser, usando o meno un framework.
Tim Down,

248

Che può essere disabilitato.


12
+1, sono così stanco delle pagine che non si preoccupano nemmeno delle basi di un grazioso degrado perché "è così difficile e tutti hanno abilitato javascript comunque".
wasatz,

27
+1. Una pagina che non funziona senza JavaScript è una pagina che sarà fragile anche con JS abilitato.
bobince

9
@iconiK Vado a dire a tutta la mia clientela governativa che JavaScript è disabilitato a livello globale per motivi di sicurezza che sono tutti idioti, vero?
graphicdivine,

16
-1 questo è fuori tema e non ha nulla a che fare con la conoscenza di JavaScript come lingua. È bene considerare quando si progetta un'app Web, ma non è ancora una risposta che appartiene a questa discussione.
TM.

24
@TM, no, è davvero una considerazione importante. Questo dovrebbe essere in primo piano nella tua mente mentre testi i valori prima di inserirli nel database o hai l'unico modo per accedere al tuo sito Web attraverso una finestra pop-up javascript di fantasia. A proposito ... Penso di dover andare a controllare qualcosa.
Elizabeth Buckwalter,

75

Comprendere le cose scritte nel Javascript di Crockford : The Good Parts è una buona ipotesi che una persona sia un programmatore JS decente.

Puoi praticamente sapere come usare una buona libreria come JQuery e ancora non conoscere le parti nascoste di Javascript.

Un'altra nota sono gli strumenti di debug su vari browser. Un programmatore JS dovrebbe sapere come eseguire il debug del suo codice in diversi browser.

Oh! E sapere che JSLint danneggerà totalmente i tuoi sentimenti !!


+1 Continua a dimenticare quel libro, ottima raccomandazione.
David,

8
Ci sono anche molti video istruttivi e perspicaci di Crockford su developer.yahoo.com/yui/theater - e penso di non aver bisogno di menzionare crockfordfacts.com :-)
ndim

+1 - JSLint è una cosa meravigliosa quando si tenta di sviluppare JS per un framework che non ha supporto di debug incorporato ( tosse Siebel, PDF tosse ).
J. Polfer,

49

Se vuoi essere un vero ninja JavaScript, dovresti conoscere le risposte a ogni domanda del Perfection uccide JavaScript Quiz .

Un esempio per stimolare l'appetito:

(function f(f){ 
  return typeof f(); 
})(function(){ return 1; });

Cosa restituisce questa espressione?

  • "numero"
  • "non definito"
  • "funzione"
  • Errore

10
Dai un'occhiata alle mie risposte: codingspot.com/2010/02/…
CMS

@CMS Molto bene! La prima volta hai avuto davvero tutto bene, o questo include alcune ricerche?
Skilldrick,

7
Skilldrick: Penso di averli presi tutti per la prima volta, sono un lettore frequente dello standard ECMA-262 (lo so, sono un mostro :-)
CMS

46

Non conosci JavaScript se non conosci:

  1. chiusure
  2. Eredità basata sul prototipo
  3. Il modello del modulo
  4. Il W3C-DOM
  5. Come funzionano gli eventi

Mi piace molto questa risposta. Ti aiuta a individuare le aree scure a tua conoscenza. Gli eventi sono l'unica cosa ancora un po 'oscura per me in questa lista di controllo (se il modello del modulo significa "non ostruire lo spazio dei nomi globale" e quindi include gli ambiti e l'operatore var).
silviot,

11
Direi che You don't know JavaScript if you don't know The W3C-DOM. Le due cose sono diverse.
gblazex,

37

..che javascript non è java :)

Molte, molte persone che iniziano con lo sviluppo di siti Web mi hanno detto che JavaScript è semplicemente Java!


+1 Questo punto è piuttosto fondamentale!
amelvin,

71
"JavaScript è per Java come tappeto è per auto."
Josh Lee,

1
Javascript è simile a Java come C # è simile a C. Certo, la sintassi sembra un po 'simile, ma molto diversa.
Earlz,

4
a meno che non utilizzino Google Web Toolkit
Afriza N. Arief

È interessante notare che Microsoft ha basato le funzioni di data conformi a Y2k in JScript per IE3 su java.util.Date.
Bayard Randel,

27
  1. Familiarizzare con almeno una libreria Javascript (Jquery, Prototype, ecc.).

  2. Scopri come utilizzare gli strumenti di debug dei principali browser (MSIE 7-8, Firefox, Chrome, Safari)

  3. Leggi sul settore: il sito Web di Douglas Crockford è un vero tesoro, mentre Ajaxian.com è un buon blog per tenere il passo con idee nuove, interessanti e o strane per Javascript. Ci sono molte altre risorse, ma quelle sono quelle che mi hanno aiutato di più.


Seriamente, perché il voto negativo?
David,

+1 Troppo voto tattico, sul serio le persone dovrebbero semplicemente votare le buone risposte non solo cercare di dare una spinta alla loro cima.
amelvin,

1
@Murali VP Ho ipotizzato di "conoscere" Javascript nel contesto dei browser. Subito dopo un equivalente di Hello World, dovrai capire i tuoi errori logici e di runtime, che possono essere diversi per interprete. Non direi di conoscere nessuna lingua se non sapessi come eseguirne il debug. Per quanto riguarda un requisito del framework, Javascript è un po 'come i primi C, dove sottili differenze di implementazione sabotano gli incauti; jQuery e prototypejs superano queste differenze e rendono Javascript uno strumento affidabile mentre si aggiungono ulteriori chiamate API per aumentare la produttività. (cont.)
David,

@Murali VP Per essere onesti, Javascript ha fatto molta strada da quando ho iniziato a usarlo negli anni '90 e, ad eccezione di Microsoft, gli altri interpreti Javascript hanno fatto un lavoro impressionante per obbedire alle specifiche e giocare correttamente.
David,

@Davide grazie per la bella spiegazione. Tendi ad essere d'accordo con te.
Murali VP,

24

Gli oggetti Javascript e funzionano come cittadini di prima classe , richiamate , per non dimenticare gli eventi e quindi JQuery .


20
Ah jQuery, il framework JS overhyped!
Murali VP,


23

Le variabili sono globali se non dichiarate locali !!

Bad (DoSomething () viene chiamato solo 10 volte):

function CountToTen()
{
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();

Buono (DoSomething () viene chiamato 50 volte come previsto):

function CountToTen()
{
  var i;
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  var i;
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();

2
Non l'avevo mai nemmeno considerato. Ottimo punto
oliva

6
Cerco di prendere l'abitudine di for (var i=0;in tutti i miei cicli
ghoppe,

2
Crockford preferisce mettere varin cima alla funzione, perché non ti inganna sulla dimensione dell'ambito della variabile. js2-modesi lamenterà se hai var idue forloop separati nella stessa funzione, poiché suggerisce che pensi di avere due variabili separate e non lo fai. Tuttavia, cerco di non varseparare mai le cose da dove le inizializzo.
Kragen Javier Sitaker,

Non mi interessa se non è mirato. Non posso sopportare che una variabile abbia dichiarato 20 righe prima che venga usata
Juan Mendes,


8

Per sapere che Javascript era originariamente chiamato LiveScript e che il prefisso "Java" era associato a scopi di marketing non perché Java e Javascript fossero correlati (cosa che non lo sono).

Oh, e per possedere qualsiasi versione di "Javascript: The Definitive Guide" di David Flanagan (questa informazione è a pagina 2).

... e per apprezzare quelli che erano già passati nel tentativo di offuscare il documento.all [] di Internet Explorer 4 e il documento.layers [] di Netscape Navigator 4 prima che artisti del calibro di Jquery togliessero il dolore.

MODIFICARE:

Come sottolinea @Kinopiko JavaScript originariamente era chiamato progetto Mocha ( alcune fonti ritengono anche che fosse chiamato progetto LiveWire) ma è generalmente accettato che il linguaggio (scritto da Brendan Eich) fosse previsto per essere rilasciato come LiveScript prima che il prefisso Java fosse adottato uscita all'inizio del 1996.


+1 per la raccolta di punte di cincia da Douglas Crockford!
Gath

1
Pensavo che JavaScript fosse originariamente chiamato Mocha?

1
@Kinopiko Secondo il mio libro "Javascript: The Definitive Guide" 3ed (giugno 1998) di David Flanaghan, si chiamava LiveScript.
amelvin,

@gath Un giorno in cui apprendi qualcosa è una buona giornata!
amelvin,

1
@amelvin Ogni giorno è un giorno di scuola.
Colonnello Sponsz,

8

Bisogna essere consapevoli di quanto segue per dire "Conosco JavaScript":

  1. JavaScript è buono ma DOM è un punto dolente
  2. I problemi del browser incrociato possono farti impazzire
  3. A meno che il codice non sia testato su almeno 4 diversi buoni browser , non si può dire che sia privo di bug
  4. Chiusura .............. Deve sapere
  5. Basato sul suo prototipo ........... Bello è divertente imparare questo
  6. parola chiave debugger ..... Aiuta in crisi

Bella lista, piuttosto magra. Ho riso di "4" buoni browser. :) Penso che il numero 7 dovrebbe essere un odio salutare per i browser IE in versione 8.
Shyam,

@Shyam, cosa ti fa pensare che non dovremmo avere un sano odio per IE8? Ho ancora problemi in IE8 ... problemi che sono solo in IE8.
Tracker1,

@ Tracker1: ci saranno sempre problemi. E colpire un browser che non ho toccato, beh, sarebbe un po 'ingiusto. Ecco perché ho riso di 4 buoni browser: "Firefox, Chrome, Safari e Opera" sono gli unici per cui ho sviluppato. Ho smesso di hackerare per IE, l'ho solo fatto eseguire il codice Fisher Price, come se JavaScript fosse disabilitato.
Shyam,

7

Quel JavaScript è molto più diverso rispetto ad altre lingue di quanto si pensi. Guarda questo fantastico Google Tech Talk per avere un'impressione: http://www.youtube.com/watch?v=hQVTIJBZook


1
+1 Questa è una grande spiegazione di come fermare il succhiare JavaScript. Vale la pena guardarli dopo: yuiblog.com/crockford
Colonnello Sponsz,

Un'altra buona presentazione di Crockfod ("The JavaScript Programming Language" in 4 parti) video.yahoo.com/watch/111593/1710507
Alex K.

7

Cosa dovrebbe sapere ogni programmatore javascript?

Che ne dici, posso disattivare i tuoi sforzi con 2 clic. Quindi, se possibile, fornire un fallback.


Puoi anche disinstallare il tuo browser web. Al giorno d'oggi ci sono pochissime persone che disabilitano JavaScript. Coloro che probabilmente non hanno bisogno di navigare sul web. L'unica eccezione a ciò è che i crawler web devono accedere ai tuoi contenuti pubblici e non possono fare affidamento su JS per farlo.
Jean Vincent,

Sono più interessato a fornire modi non JS per accedere alle cose. Conosco persone che navigano con JS disabilitato o usano screen reader. Non sempre giocano bene con JS. Ho visto siti in cui una semplice pagina di accesso viene inviata tramite Ajax senza alcun fallback. No JS, nessun accesso. Il sito non utilizza nemmeno molto JS, solo per inviare moduli.
Khainestar,

Credo che gli utenti che disabilitano intenzionalmente JS come hai sottinteso, siano molto rari oggi, sicuramente molto meno di 10 anni fa. Questo è il motivo per cui non capisco perché dovremmo progettare un sito due volte per le persone che non vogliono comunque visitare il tuo sito. Quindi, nel tuo esempio, non possono accedere, e allora? L'altra cosa è che non è assolutamente possibile progettare un sito moderno senza JS.
Jean Vincent,


6

Conosci javascript se puoi usare Array, Number, String, Date e Object in modo efficace. Punti positivi per Math e RegExp. Dovresti essere in grado di scrivere funzioni e utilizzare variabili (nell'ambito corretto, cioè come "metodi" di un oggetto).

Vedo alcuni commenti sulla conoscenza di chiusure, sintassi di funzioni stravaganti, blabla. Tutto ciò è del tutto irrilevante per questa domanda. È come dire che sei un corridore se riesci a correre il trattino da 100m in 11 secondi.

Dico che ci vogliono forse un paio di settimane per diventare esperti in JavaScript. Dopodiché ci vogliono anni e dozzine di libri e migliaia di linee di programmazione per diventare un esperto, un ninja, ecc.

Ma non era questa la domanda.

Oh, e il DOM non fa parte di JavaScript, e nemmeno jQuery. Quindi penso che entrambi siano ugualmente irrilevanti anche per la domanda.


1
La chiusura è lì, che ti interessi o no. È potente ma può essere facilmente utilizzato in modo improprio. Non conosci la lingua se non sai come funziona.
gblazex,

A parte i danni che le chiusure possono causare, come perdite di memoria, specialmente nel nostro vero amico Internet Explorer 6.
Marcel Korpel,


4

Dopo aver letto tutto quanto sopra, è anche perfettamente corretto imparare Javascript usando un framework come jQuery. La verità è che è il primo modo in cui molte persone hanno scelto JS in primo luogo. Nessuna vergogna.


4

matrice . lengthIl metodo non è un conteggio degli elementi dell'array, ma l'indice più alto. anche quando l'elemento è stato impostato suundefined

var a = [];
a.length;   // === 0
a[10];      // === undefined
a[10] = undefined;
a.length;   // === 11
a.pop();    // === undefined
a.length;   // === 10

questo comportamento è difficilmente distinguibile da un bug di progettazione del linguaggio.


3

jQuery sarebbe la mia migliore raccomandazione. Non solo per il codice stesso, è il linguaggio, lo stile, il pensiero dietro di esso che è più degno di emulazione.


2
+1 Jquery ha rivoluzionato il mio uso di javascript.
amelvin,

1
Buona argomentazione. L'espansione lo renderebbe un'ottima risposta.
Donal Fellows,

jQuery ti costringe in una modalità procedurale. Preferisco di gran lunga scrivere OO JS
Juan Mendes il

Non c'è niente di magico nell'orientamento agli oggetti. Preferirei usare un framework progettato da John Resig e utilizzato da migliaia di altri sviluppatori di qualsiasi cosa tu o io scriveremmo, indipendentemente dalla modalità.
Duffymo,

3

Quel javascript è la lingua più diffusa al mondo. (Probabilmente)


8
Il linguaggio naturale nativo più diffuso è il mandarino. Sapendolo ti renderebbe un oratore mandarino? Conoscere questo fatto avrebbe forse qualcosa a che fare con la tua conoscenza della lingua?
Zano,

11
Il linguaggio più diffuso al mondo è il codice genetico del DNA che controlla la sintesi proteica all'interno delle cellule.
Ernelli

Prima del mandarino e del DNA, il linguaggio dell'amore deve essere prima implementato: così vince. BAM!
Christopher,

3

Imparare una lingua davvero bene e comprenderne le varie stranezze deriva da (anni di) esperienza. Se vuoi essere un programmatore migliore, direi, comprendendo i modelli di progettazione, come e quando usarli e / o anche quando li stai usando senza accorgertene; architettura tecnica ed esperienza utente.

Conoscere la lingua (JavaScript) significa che puoi prendere qualsiasi framework e usarlo a piacimento. Dovrai inevitabilmente immergerti nel codice sorgente e se tutto ciò che sai è la sintassi un framework o 2 o 3, non andrai lontano. Nel dire questo, entrare nel codice sorgente di alcuni framework è probabilmente uno dei modi migliori per vedere come usare JavaScript. Fare casino scorrendo il codice in Firebug o Web Inspector, quindi controllando la documentazione JavaScript, in particolare i documenti Mozilla e Webkit, per capire meglio cosa stai guardando.

Comprendere la differenza tra programmazione orientata agli oggetti e funzionale, che JavaScript è un mix sexy tra i due e quando e come utilizzare entrambi per creare una base di codice killer e applicazioni fantastiche ti renderanno un programmatore JavaScript migliore.

Semplicemente leggendo alcuni libri, in particolare le "parti buone" di Crockford che presentano semplicemente le sue opinioni su ciò che è buono in JavaScript, mentre saltare la maggior parte delle parti INCREDIBILI di JavaScript ti farà iniziare con il piede sbagliato.

D'altra parte, controllare il codice scritto da qualcuno come Thomas Fuchs ti darà molte più informazioni sul potere di scrivere JavaScript sorprendenti ed efficienti.

Cercare di memorizzare alcuni gotcha o WTF non è di grande aiuto, lo prenderai se inizi a scrivere codice e ad analizzare un codice di libreria / framework, in particolare un commento utile, per capire perché ne hanno usati alcuni proprietà / valori e non altri perché e quando è bene usare operandi e operatori specifici, questo è tutto lì nel codice di utilizzo del framework. Quanto è meglio che imparare dall'esempio? : ^)


+1 per non adorare Crockford. Tratto i suoi punti di vista come faccio un predicatore in chiesa. Rispetto quello che dicono, ma prendo tutto con un granello di sale.
Juan Mendes,

2

In Javascript, le prestazioni contano.

Non esiste un compilatore intelligente per ottimizzare il tuo codice, quindi dovresti stare più attento mentre scrivi il codice javascript rispetto a lingue come C #, Java ...


1
In effetti i compilatori del browser sono molto bravi a ottimizzare il tuo codice.
Eduardo,

1
Chrome è molto intelligente nell'ottimizzare il tuo codice, questa risposta non è vera con tutti i nuovi motori JS
Juan Mendes,

E IE, i browser mobili?
caltuntas,

1

oggetti letterali perché sono così belli da scrivere.



0
  1. Sapere che esiste una vita con e senza with()e dove tracciare la linea.
  2. È possibile creare errori personalizzati con l' throwistruzione per arrestare intenzionalmente il runtime javascript.

-1

JavaScript non supporta la separazione della parola chiave return e dell'istruzione return con carattere newline come il seguente codice (o provalo nella mia pagina jsFiddle )

function foo()
{
    return
    {
        bar: 'something'
    };
}

$(function()
{
    document.write(foo());
});

Non capisco perché JavaScript non supporti questo stile perché è molto più semplice leggere un codice sorgente JavaScript molto complesso se confrontato con lo stile predefinito di JavaScript.

PS. Ho scritto JavaScript per quasi 6 anni. Ma ho appena trovato questo bug con me stesso quando provo ad eseguire la seguente funzione. Restituisce sempre indefinito. Quando uso il debugger e passo in questa funzione, tutto funziona perfettamente. Penso che dovrebbe essere il peggior bug di programmazione della mia vita.

function JqGridInlineEditor_GenerateTool(cellvalue, options, rowObject, disableEdit, disableDelete)
{
    return 
        (!disableEdit ? '<a class="button edit" href="javascript: void(0);" onclick="JqGridInlineEditor_EditRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Edit.gif'), 'Click here to Edit or \nDouble-click row to edit.') : '') +
        (!disableDelete ? '<a class="button delete" href="javascript: void(0);" onclick="JqGridInlineEditor_DeleteRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Delete.png'), 'Click here to Delete or \nSelect row and then press Delete') : '') +
        (!disableEdit ? '<a class="button save" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_SaveRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Save.png'), 'Click here to Save or \nPress Enter') : '') +
        (!disableEdit ? '<a class="button cancel" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_RestoreRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Cancel.png'), 'Click here to Cancel or \nPress Esc') : '');
}

3
In JavaScript, i caratteri di nuova riga generalmente agiscono come separatori di istruzioni; solo quando è impossibile che un'istruzione sia terminata (ad es. var foo = "bar" +) il parser continua a leggere.
Marcel Korpel,


2
@Marcel - Questo non è esattamente vero; ad esempio, le due righe var foo = 5e -1;comporteranno l'impostazione foo su 4, anche se ognuna è una dichiarazione valida da sola.
Ben Blank,

4
Questo perché la lingua inietta automaticamente i punti e virgola in istruzioni separate. Questo è un gotcha con la lingua. La tua dichiarazione di reso viene convertita in questa: ritorno; {key: value,} Per evitare questo problema, dovresti adottare la pratica di mettere i punti e virgola nella stessa riga, in questo modo: return {key: value}; Inoltre, fatevi un favore e prendete una copia di Douglas Crockford: The Good Parts. Questo è chiaramente menzionato nel libro.
Rajat,

@Ben - Caso interessante, grazie per averci indicato. Detto questo, consiglierei di non fare affidamento su questi casi limite e mettere tutto su una riga che termina con un punto e virgola e mettere il codice su più righe quando una riga termina con qualcosa in cui un'istruzione o un'espressione semplicemente non può terminare .
Marcel Korpel,

-3

Poiché JS è un linguaggio funzionale, un programmatore JS decente deve essere in grado di scrivere Y-combinatore e spiegare come funziona al di sopra della testa.


1
Cosa c'è di sbagliato nel poter scrivere il Y-combinatore? E sì, JavaScript è un linguaggio funzionale. Se vuoi dire che "conosci javascript" è necessaria una buona conoscenza della programmazione funzionale.
Raynos,

C può essere usato anche come linguaggio funzionale.
kzh

Recentemente ho letto del combinatore Y, ho capito come funziona e in quali casi potrebbe essere usato .. ma non ho mai trovato un'istanza in cui non potevo riscrivere un problema per non aver bisogno del combinatore Y.
Evert

-5

... su Google Web Toolkit , il che significa che il tuo progetto javascript probabilmente potrebbe essere sviluppato in un modo molto più conveniente.


2
GWT non è proprio JavaScript, è il modo Java di scrivere JavaScript.
Livingston Samuel,

... e ogni programmatore di Javascipt dovrebbe saperlo.
Viktor Sehr,

che il tuo progetto javascript probabilmente potrebbe essere sviluppato in un modo molto più conveniente.
Viktor Sehr,

6
Penso che Javascript sia più facile da gestire rispetto a Java, personalmente.
timw4mail,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.