Cosa dovrebbe sapere ogni programmatore JavaScript?

Esiste un insieme di cose che ogni programmatore JavaScript dovrebbe sapere per poter dire “Conosco JavaScript”?

Che può essere disabilitato.

Capire le cose scritte in Javascript di Crockford : The Good Parts è un buon presupposto 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 è Debug di strumenti su vari browser. Un programmatore JS dovrebbe sapere come eseguire il debug del suo codice in diversi browser.

Oh! E sapere JSLint farà del male ai tuoi sentimenti !!

Se vuoi essere un vero ninja JavaScript, dovresti conoscere le risposte a ogni domanda nel Perfection uccide il quiz JavaScript .

Un esempio per stuzzicare l’appetito:

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

Cosa restituisce questa espressione?

  • “numero”
  • “non definito”
  • “funzione”
  • Errore

Non sai JavaScript se non lo sai:

  1. chiusure
  2. Ereditarietà basata su prototipi
  3. Il modello del modulo
  4. Il W3C-DOM
  5. Come funzionano gli eventi

..che javascript non è java 🙂

Molte, molte persone che iniziano con lo sviluppo del sito mi hanno detto che javascript è semplicemente java!

  1. Familiarizza 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 l’industria: il sito web di Douglas Crockford è un tesoro mentre Ajaxian.com è un buon blog per tenere testa a idee nuove, interessanti o strane per Javascript. Ci sono un certo numero di altre risorse ma quelle sono quelle che mi hanno aiutato di più.

Oggetti Javascript e funzione come cittadini di prima class , callback , per non dimenticare eventi e quindi JQuery .

Che Javascript non è qualcosa che può essere imparato in un’ora!

Le variabili sono globali a meno che non siano 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 () è 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(); 

Come usare le parti buone e come evitare le parti orribili .

Per sapere che Javascript è stato originariamente chiamato LiveScript e il prefisso ‘Java’ è stato allegato per scopi di marketing non perché Java e Javascript sono correlati (che non 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 sono già andati avanti nel tentativo di confondere i documenti document.layers [] di DocumentWorks [] e Netscape Navigator 4 di Internet Explorer 4. prima che Jquery prendesse il dolore.

MODIFICARE:

Come @Kinopiko indica che JavaScript è stato chiamato originariamente progetto Mocha ( alcune fonti ritengono 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 su rilascio all’inizio del 1996.

Uno dovrebbe essere a conoscenza di quanto segue per dire “I Know JavaScript”:

  1. JavaScript è buono ma DOM è il 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 errori
  4. Chiusura ………….. Deve saperlo
  5. Il suo prototipo basato ……….. Bello è divertente per imparare questo
  6. Parola chiave debugger ….. Aiuta in crisi

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

Cosa dovrebbe sapere ogni codificatore di javascript?

Che ne dici, posso distriggersre i tuoi sforzi con 2 clic. Quindi fornire una riserva, se ansible.

Consiglio vivamente di leggere Javascript: The Good Parts

Sai javascript se puoi usare efficacemente Array, Number, String, Date e Object. Punti in più per Math e RegExp. Dovresti essere in grado di scrivere funzioni e usare variabili (in ambito corretto, cioè come “metodi” di un object).

Vedo alcuni commenti su conoscere chiusure, syntax di funzioni stravaganti, blabla. Tutto ciò è del tutto irrilevante per questa domanda. È come dire che sei un corridore se riesci a correre 100 m in meno di 11 secondi.

Dico che ci vogliono forse un paio di settimane per diventare abili in javascript. Dopo ci vogliono anni e decine di libri e migliaia di linee di programmazione per diventare un esperto, un ninja, ecc.

Ma quella non era 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.

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

array . length metodo length non è un conteggio degli elementi dell’array, ma l’indice più alto. anche quando l’object è stato impostato su undefined

 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 del linguaggio design.

jQuery sarebbe la mia migliore raccomandazione. Non solo per il codice stesso, è l’idioma, lo stile, il modo di pensare che è più degno di emulazione.

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

Imparare una lingua davvero bene e capire le sue stranezze deriva da (anni di) esperienza. Se vuoi essere un programmatore migliore, direi, capendo i modelli di progettazione, come e quando usarli e / o anche quando li stai utilizzando senza rendertene conto; architettura tecnica e user experience.

Conoscere il linguaggio (JavaScript) significa che puoi prendere qualsiasi framework e usarlo a volontà. Dovrai inevitabilmente immergerti nel codice sorgente e se tutto quello che sai è la syntax di un framework o 2 o 3, allora non andrai lontano. Dicendo questo, entrare nel codice sorgente di alcuni diversi framework è probabilmente uno dei modi migliori per vedere come può essere usato JavaScript. Pasticciare passando attraverso il codice in Firebug o Web Inspector, quindi controllando la documentazione JavaScript, in particolare i documenti Mozilla e Webkit, per ottenere ulteriori informazioni su ciò che stai guardando.

Comprendendo la differenza tra la programmazione orientata agli oggetti e la programmazione funzionale, JavaScript è un mix sexy tra i due e quando e come utilizzare entrambi per creare un codebase killer e le applicazioni fantastiche ti renderanno un programmatore JavaScript migliore.

Semplicemente leggendo alcuni libri, in particolare le “parti buone” di Crockford, che si limitano a presentare le sue opinioni su ciò che è buono in JavaScript, mentre saltare la maggior parte delle parti di JavaScript IMPRESSIONANTE ti porterà via con il piede sbagliato.

Il controllo del codice scritto da qualcuno come Thomas Fuchs, d’altro canto, ti darà molte più informazioni sulla potenza di scrivere JavaScript sorprendente ed efficiente.

Provare a memorizzare alcuni trucchi o WTF non sarà di certo di aiuto, lo raccoglierete se inizierete a codificare e passerete attraverso il codice di una libreria / framework, in particolare un codice commentato, per vedere perché hanno usato certe proprietà / valori e non altri perché e quando è opportuno utilizzare operandi e operatori specifici, questo è tutto ciò che si trova nel codice delle persone del framework. Quanto è meglio che imparare con l’esempio? : ^)

In Javascript, le prestazioni contano.

Non c’è un compilatore intelligente per ottimizzare il tuo codice quindi dovresti stare più attento mentre stai scrivendo il codice javascript di linguaggi come C #, Java …

oggetti letterali perché sono così belli da scrivere.

Anche le seguenti cose sono importanti:

1) sollevamento variabile. 2) Catene di portata e oggetti di triggerszione.

e poi cose come queste: 🙂

3) wtfjs.com

4) tutto è un object http://www.lifeinafolder.com/images/Js.jpg

  1. Sapendo che c’è una vita con e senza with() e dove tracciare la linea.
  2. È ansible creare errori personalizzati con l’istruzione throw per bloccare intenzionalmente il runtime javascript.

JavaScript non supporta il separare la parola chiave return e l’istruzione return con il carattere newline come il seguente codice (o lo provo nella mia pagina jsFiddle )

 function foo() { return { bar: 'something' }; } $(function() { document.write(foo()); }); 

Non capisco perché JavaScript non supporta questo stile perché è molto più facile leggere codice sorgente JavaScript molto complesso quando lo si confronta con lo stile predefinito di JavaScript.

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

 function JqGridInlineEditor_GenerateTool(cellvalue, options, rowObject, disableEdit, disableDelete) { return (!disableEdit ? '{2}'.format(options.rowId, getUrl('~/Content/Icons/Edit.gif'), 'Click here to Edit or \nDouble-click row to edit.') : '') + (!disableDelete ? '{2}'.format(options.rowId, getUrl('~/Content/Icons/Delete.png'), 'Click here to Delete or \nSelect row and then press Delete') : '') + (!disableEdit ? ''.format(options.rowId, getUrl('~/Content/Icons/Save.png'), 'Click here to Save or \nPress Enter') : '') + (!disableEdit ? ''.format(options.rowId, getUrl('~/Content/Icons/Cancel.png'), 'Click here to Cancel or \nPress Esc') : ''); } 

Poiché JS è un linguaggio funzionale, un programmatore JS decente deve essere in grado di scrivere il combinatore Y e spiegare come funziona.

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