JavaScript para gatos (Galego)

JavaScript para gatos

Unha introdución para novos programadores

Tan sinxelo que incluso o seu amigo humano tamén pode facelo!

JavaScript é unha linguaxe de programación ou, noutras palabras, un medio polo cal a computadora está instruída a facer cousas. Así como calquera de nós controlar os humanos con asubíos e meow, pódese controlar as computadoras con declaracións escritas nunha linguaxe de programación. Todos os navegadores web entenden JavaScript e pode aproveitar isto para facer páxinas web facer cousas tolas!

JavaScript comezou como unha forma de facer páxinas web máis interactivas. Hoxe en día JavaScript funciona non só nos navegadores – tamén funciona con servidores web, teléfonos e incluso robots! Esta páxina mostraralle unha base de JavaScript para que poida comezar de inmediato *.

* Tempo de tutorial real: máis que instantáneo. Probablemente unha hora ou dúas. Ademais, como es un gato, queres que te guste máis ao sol que correr.

Táboa de contidos

  • a base
  • cordas
  • Valores e variables
  • Usando funcións
  • Funcións de idioma
  • Código de terceiros
  • Creando Novas funcións
  • Cycles
  • Arrays
  • Obxectos
  • Callbacks
  • Reading recomendado

Non ser un gato temeroso

Sempre caerá en pé – mesmo a programación! A diferenza de chutar un vaso de auga no seu portátil, non hai nada nestes tutoriais que poden danar o seu ordenador de calquera forma, mesmo se escribir mal un comando ou prema no botón mal. Do mesmo xeito que os gatos, os programadores cometen erros todo o tempo: escribir erros, esquecendo as comiñas ou as chaves e esquecéndose de como funcionan algunhas funcións básicas. Os programadores preocupan máis sobre facer que as cousas funcionen eventualmente no canto de tratar de traballar a primeira vez que están escritos. A mellor forma de aprender é cometer erros!

Por iso non tes que ser un gato temeroso! O peor que pode ocorrer é que ten que actualizar esta páxina no seu navegador web se está atrapado. Tampouco se preocupa, isto ocorre moi raramente.

# A base

Hai JavaScript en execución nesta páxina neste momento. Imos xogar un pouco con iso. Para a sinxeleza vou supoñer que está a usar Google Chrome para ler esta páxina (se non vai ser máis fácil para ambos se segues o tutorial usando Chrome).

Primeiro, faga clic en Xusto Calquera parte da pantalla e seleccione Inspeccionar o elemento (ou inspeccionar o elemento en inglés), a continuación, prema na pestana que di a consola. Debería ver unha cousa que parece así:

Esta é unha consola, tamén chamada “liña de comandos” ou “terminal “. Basicamente é unha forma de escribir unha cousa á vez da computadora e inmediatamente obter a resposta. Hai excelentes ferramentas de aprendizaxe útil (aínda uso a consola case todos os días que escribo código).

A consola fai algunhas cousas realmente xeniais. Comecei a escribir algo e a consola está axudando a darme unha lista de todas as cousas posibles que podo seguir escribindo. Outra cousa que podes facer é escribir 1 + 1 na consola e despois prema Enter e vexa o que pasa.

usando A consola é unha parte importante ao aprender JavaScript. Se non sabes como funciona algo ou que o comando serve para que, podes ir á consola e descubrir! O seguinte é un exemplo:

strings

Como eu son un gato que quero substituír cada instancia da palabra perro no Internet con esos malditos perros. Primeiro vou á consola e escribo algunhas frases que conteñen a palabra perro polo menos unha vez. En JavaScript un conxunto de letras, números, palabras ou calquera outra cousa é coñecida como unha cadea (ou cadea de caracteres). As cadeas deben comezar e rematar cunha cita. Non importa como usar unha única cita ou dobre ", sempre que use o mesmo símbolo ao comezo e no End.

Vexa a horrible mensaxe de erro? Non te preocupes: non rompe ningunha lei. Syntax Error ILLEGAL é como parece cando un robot significa que o seu programa ten un problema. As dúas primeiras frases coinciden co tipo de commod usado ao comezo e ao final da frase, pero cando o mesturamos a computadora en liña, é como mesturar sandía con viño.

Aceptar, para corrixir unha desas declaracións (substituíndo perro para a nosa versión mellorada) Temos que gardar primeiro a declaración orixinal para poder chamalo de novo cando Facemos a nosa substitución máxica. Ves como se repite a cadea en vermello cando escribo na consola? Isto é porque non dixemos que a sentenza gárdase en calquera lugar e por iso non os devolve (ou dános un erro cando facemos un erro).

# valores e variables

Os valores son os compoñentes máis sinxelos en JavaScript. 1 é un valor, true (que representa un valor lóxico) é un valor, "hola" é un valor, function() {} é un valor, a lista continúa. Hai moitos tipos de valores en JavaScript, pero non necesitamos coñecelos todos agora: vai aprender de forma natural mentres máis escribe o código!

para aforrar valores que usamos as chamadas de variables. A palabra “variable” significa “pode cambiar” e úsase porque as variables poden gardar diferentes tipos de valores e cambiar o seu valor moitas veces. As variables son bastante similares a unha caixa de correo. Poñemos algo nunha variable, como unha frase, e entón damos a variable unha dirección que pode usar para atopar esa frase máis tarde. Nas caixas de correo de vida real necesitan números de código postal pero en javascript normalmente son substituídos por letras minúsculas ou números sen espazos.

var é unha abreviatura de variable e = en resposta, o que significa alí Non é nada que volver.

Se simplemente escribe o nome dunha variable na consola, imprimirase o valor gardado nesa variable. Unha nota sobre as variables é que por defecto están perdidas cando cambias a unha páxina diferente. Se fose actualizar a páxina en Chrome, por exemplo, a miña variable sentenciaPerro desaparecería para sempre, coma se nunca fose existida. Pero non te preocupes por iso, podes reforzar as frechas cara arriba e abaixo no teclado cando estás na consola e obter as declaracións que estiveses escribindo últimamente.

# usando funcións

Agora que temos a nosa sentenza gardada nunha variable, imos cambiar a palabra gardada nela! Podemos facelo creando unha función. As funcións son un tipo de valor que fai só unha función específica (tamén coñecida como propósito ou acción) por nós. Chamarlles “accións” soa estraño e creo que é por iso que elixiron “función” no seu lugar.

JavaScript ten unha función chamada replace (substituír en inglés) exactamente o que Queremos! As funcións toman valores nos seus parénteses (cero, un ou máis) e devolve ou calquera cousa (undefined) ou a cadea modificada. A función replace está dispoñible para o seu uso en calquera cadea e leva 2 valores: os personaxes que queremos sacar e os personaxes que os reemplazarán. Tornouse un pouco confuso para describir estas cousas así que aquí temos un exemplo visual:

Notas como o valor de sentenciaPerro é o mesmo mesmo despois de executar replace sobre el? Isto ocorre porque a función replace (e a maioría das funcións de JavaScript para estes fins) toman o valor que damos e devolver un novo valor, sen modificar o valor que pasamos. Como non queremos gardar o resultado (non hai = no lado esquerdo da operación de substitución) o valor devolto está impreso na consola.

# Funcións da lingua

Debe preguntarlle que outras funcións están dispoñibles en JavaScript. A resposta: moito. Hai moitas bibliotecas estándar integradas das que pode aprender en MDN (un sitio de Mozilla que ten moito e moi boa información sobre as tecnoloxías web). Por exemplo, aquí está a páxina de MDN nas funcións relacionadas coa matemática de JavaScript.

# código de terceiros

Tamén hai moito código de JavaScript dispoñible que non forma parte do estándar Biblioteca. Normalmente é referido a JavaScript escrito por terceiro como unha “biblioteca” ou “plugin”. Un dos meus favoritos chámase Underscore.js. Imos atopalo e cargalo na nosa páxina.Primeiro vaia ao sitio de subliñado, http://underscorejs.org/, faga clic na ligazón de descarga (en xeral, uso a versión de desenvolvemento porque son fáciles de ler, pero calquera dos 2 vai darlle A mesma funcionalidade) e copia todo o código no seu portapapeis (pode usar Seleccionar todo premendo ben). Entón pérdelo na súa consola e prema Intro. Agora o teu navegador ten unha nova variable: _. Underscore dálle moitas funcións útiles para xogar. Aprendemos a utilizalos máis tarde.

# creando novas funcións

Non está limitado a Usando funcións dos demais – tamén podes escribilos. É moi sinxelo! Imos facer unha función chamada ponerleOnda que engade algúns puntos de exclamación ao final dunha cadea.

function ponerleOnda(string) { return string + '!!!!'}

no meu Cabeza Leo en voz alta como: “Hai unha función chamada” Put on It “que leva unha cadea e devolve unha nova copia da corda que ten algúns puntos de exclamación ao final”. Así é como escribo isto na consola manualmente sen escribir a función:

a expresión string + !!!! Devolve unha nova cadea e a nosa variable chamada string que segue como antes (xa que nunca o actualizamos usando =).

Imos usar a nosa función en lugar de facelo manualmente. En primeiro lugar, pegue a función na consola e logo chama a función pasando unha cadea:

Tamén pode chamalo función Pasar unha variable que apunta a unha cadea (no exemplo anterior escribimos a cadea directa como un valor en vez de gardalo como unha primeira variable):

A liña é equivalente a dicir sentencia + '!!!!'. Que pasa se queremos modificar no lugar (coñecido como actualización) o valor de declaración? Simplemente garda o valor de retorno da función na variable sentencia:

var sentencia = "hora de la siesta"sentencia = ponerleOnda(sentencia)

agora sentencia terá os signos de exclamación ao final! Teña en conta que só usou var cando inicializa a variable – a primeira vez que o usou. Entón non debes usar var a menos que queiras inicializar (restablecer / limpar / baleirar) a variable.

Que pasa se tomamos a return da función?

Por que sentencia Está baleiro? Porque as funcións devolven undefined por defecto! Pode optar por devolver calquera valor usando return. As funcións deben ter un valor e, se cambian o valor ou crean un novo que se vai usar máis tarde, devuelven un valor (curiosidade: un termo legal para este estilo é Programación funcional). Aquí temos outra función que non devolve ningún valor senón que usa un método diferente para mostrarnos o resultado:

function gritalo(string) { string = string.toUpperCase() string = ponerleOnda(string) console.log(string)}

Esta función gritalo, use a nosa función ponerleOnda eo método nativo de Touppercase de cadea. Os métodos son só un nome para unha función cando pertence a algo – neste caso toUpperCase é unha función que pertence a a continuación, diga que somos un método ou función. ponerleOnda No seu lugar non pertence a ninguén, entón sería técnicamente incorrecto referirse a el como un método (é confuso, SE).

A última liña de A función é outra función nativa que simplemente leva os valores que lle dá e imprima na consola.

entón hai Algo mal con esta función gritalo? Depende! Hai 2 tipos principais de funcións:

  • Funcións que modifican ou crean valores e devolven as funcións
  • que toman valores e fagan cousas con eles que non poden devolver

console.log é un exemplo do segundo grupo: imprime cousas na súa consola: unha acción que pode ver cos seus propios ollos pero non pode ser representado como un valor de JavaScript. A miña propia regra de polgar é tratar de manter os 2 tipos de funcións separadas, polo que podemos reescribir a función

Así:

function gritalo(string) { string = string.toUpperCase() return ponerleOnda(string)}console.log(gritalo("no le temo a los humanos"))

deste xeito gritalo tórnase máis xenérico, é dicir, fai unha ou dúas cousas simples e non saben nada sobre a impresión da consola: esa parte sempre pode ser programada despois, fóra da definición da función.

# ciclos

Agora que temos habilidades básicas no noso cinto (nota do autor: quizais os gatos usan cinta?) Podemos comezar a ser vago .. Que?! Si, isto é: a programación trata de ser vago.Larry Wall, inventor da linguaxe de programación Perl, chamada Vagrancy a maior virtude dun bo programador. Se as computadoras non existían, terías que facer todo tipo de tarefas tediosas a man, pero se aprendes a programar podes tirarte ao sol todo o día mentres que unha computadora nalgún lugar executa os programas para ti. É un estilo de vida glorioso cheo de relaxación!

Os ciclos son unha das formas máis importantes de espremer o poder da computadora. Lembra Underscore.js fai un tempo? Asegúrese de que o cargou na páxina (lembre: sempre pode usar a frecha ata un par de veces e axustar Enter para cargar de novo se o necesita) e tentar copiar e pegue isto na consola:

function imprimirNumero(unNumero) { console.log(unNumero)}_.times(10, imprimirNumero)

Este código usa o método de TimesCore Times que leva un número e unha función, inicie 0 e por 10 pasos son, Chamando a función co número en cada paso.

Se tivésemos que facer manualmente o que fai times sería así:

imprimirNumero(0)imprimirNumero(1)imprimirNumero(2)imprimirNumero(3)imprimirNumero(4)imprimirNumero(5)imprimirNumero(6)imprimirNumero(7)imprimirNumero(8)imprimirNumero(9)

Pero os gatos negáronse a facer un traballo manual innecesario así, entón sempre deberiamos preguntarnos” Estamos facendo isto é o xeito máis vaivo posible? “

Entón por que está cycled? Pense deste xeito: se tivésemos que escribir unha lista de 10 números (de 0 a 9), usamos unha matriz de JavaScript, parecería así:

var ceroADiez = 

lo que times realmente é visitar cada número e repetir a tarefa: no exemplo anterior a tarefa era chamar á función imprimirNumero co Número actual. Repita as tarefas deste xeito que se chama un ciclo na matriz.

# Arrays

Menémoslles algunhas veces pero pasamos un minuto aprendendo sobre eles. Imaxina que necesitas facer un seguimento dos teus amigos. Ben, unha matriz vai facelo ben. Pense nunha matriz como unha lista ordenada onde pode manter moitas cousas dentro.

Así é como fai un:

var misAmigosGatos = 

¡Grande! Agora tes unha lista dos teus amigos de gatos.

Os elementos (isto é como chamar un elemento dunha matriz) gárdanse en matrices a partir de 0 e contando. Entón misAmigosGatos devolve felix e misAmigosGatos devolve sessa … etc.

Para obter un amigo da súa nova matriz pode simplemente acceder a el directamente como esta:

console.log(misAmigosGatos)

Se fixeches un novo amigo no Gatuno Club de moda a outra noite e queres engadila á túa lista é Super Simple: .

Para verificar que o novo gato está dentro da súa matriz pode usar .length:

Notou que push devolveu o tamaño? Bo! Tamén ten en conta que as matrices sempre preservan a orde o que significa que recordarán a orde na que engadiu ou definiu cousas. Non todo en JavaScript conserva a orde para que lembra esta propiedade especial das matrices!

# obxectos

As matrices son boas para mentir, pero para outras tarefas pode ser difícil de traballar con eles. Considere a nosa matriz de amigos felinos. Que pasa se quere gardar máis que nomes?

var misAmigosGatos = var apellidos = var direcciones = 

ás veces é bo ter todas as direccións ou nomes nunha variable. Pero ás veces tes un gato en mente, digamos Felix e queres buscar o teu enderezo. Con matrices leva un traballo enteiro porque non pode dicirlle a matriz Che, dame a dirección de Felix ‘porque’ Felix ‘está nunha matriz eo seu enderezo noutro totalmente diferente.

Isto pode ser fráxil porque os nosos arrays cambian e engaden un novo gato ao principio, tamén podemos actualizar a variable apuntando Á nova ubicación da información de Félix nos acordos! Aquí mostramos unha forma máis sinxela de manter a información gardada usando obxectos:

var primerGato = { nombre: "felix", apellido: "el gato", dirección: "La calle" }var segundoGato = { nombre: "sessa", lastName: "gato", direccion: "Liniers" }var tercerGato = { nombre: "garfield", apellido: "gato", direccion: "Casa de John Bonachón" }

Por que o faremos deste xeito? Porque agora temos unha variable para cada gato que podemos usar cando se trata de obter valores de gatos dun xeito máis cómodo e lexible.

Pódese pensar en obxectos como claves dun chaveiro. Cada un é para unha determinada porta e, se ten boas etiquetas nas súas claves, pode abrir as portas moi rapidamente. De feito, as cousas do lado esquerdo do : son chamadas clave (tamén son coñecidas como propiedades) e as cousas do lado dereito son chamadas valores.

// un objeto con una sola clave llamada 'nombre' y un solo valor 'felix'{ nombre: 'felix' }

Entón por que usar matrices se podemos poñer toda a nosa información sobre obxectos? Porque os obxectos non recordan a orde das claves que fas.Pode introducir un obxecto deste xeito:

{ fecha: "20/10/2012", diario: "hoy dormí un poco", nombre: "Carlos" }

Pero a computadora pode devolvela do seguinte xeito:

{ diario: "hoy dormí un poco", nombre: "Carlos", fecha: "20/10/2012" }

ou así!

{ nombre: "Carlos", diario: "hoy dormí un poco", fecha: "20/10/2012" }

Por iso, non pode confiar na orde das claves de obxectos. Se queres facer algo moi grande, podes facer unha matriz chea de obxectos ou un obxecto de arrays!

var archivoDeAnimo = // ordenados de menos a más por favoritismovar favoritos = { golosinas: , lugaresSiesta: }

cando combinas cousas distintas como este están facendo isto As estruturas de datos, como LEGOS!

# deatbacks

Callbacks non son realmente unha función de JavaScript, como o Objetos ou , pero unha forma de usar funcións. Para entender por que son útiles, primeiro temos que aprender sobre a programación asíncrona (tamén chamada Async). O código asíncrono é por definición escrita dun xeito que non é sincrónica. O código síncrono é fácil de entender e escribir. Este exemplo ilustrao:

var foto = descargar('http://foo-chan.com/images/sp.jpg')subirTweetConFoto(foto, '@maxogden')

Este código pseudo-síncrono descarga unha foto adorable dun gato, cargue a foto a Twitter e xera un tweet coa foto para @maxogden. Moi sinxelo!

(Nota do autor: eu, @maxogden, felizmente acepto fotos de gatos por twitter.)

Este código é síncrono porque cargar a foto a Tweet, descarga de A foto que ten que ser completada. Isto significa que na liña 2 non pode executarse ata que a tarefa da liña 1 estea completamente rematada. Se estivésemos a implementar este pseudo-código, queremos estar seguro de que descargar ‘Block’ Execución ata que se complete a descarga, evitando que calquera outro JavaScript sexa executado ata que finalice, así Como cando se completa a descarga, a execución de JavaScript está desbloqueada e execútase a liña 2.

O código síncrono está ben para as cousas rápidas, pero é horrible para as cousas que requiren aforrar, cargar ou descargar. O que ocorre se o servidor que está a baixar a foto é lento ou a conexión a Internet que usa é lenta ou a computadora onde execute o código ten moitas pestanas con videos de gatos en YouTube que é lento? Isto significa que pode levar minutos esperando ata que se execute a liña 2. Mentres tanto, como todo o JavaScript na páxina está sendo bloqueado pola descarga, a páxina vai conxelar totalmente, executándose sen resposta ata que remate a descarga.

A execución de bloqueo debe evitarse a todo custo, especialmente cando Fai que o teu programa conxela ou se faga inutilizable. Supoñemos que a foto anterior leva 1 segundo para descargar. Para ilustrar canto é un segundo para unha computadora moderna, aquí hai un programa que ten cantas tarefas de JavaScript podemos procesar nun segundo.

function medirVelocidadCiclo() { var contador = 0 function sumaUno() { contador = contador + 1 } // Date.now() Retorna un número grande que representa la cantidad de // milisegundos que pasaron desde el 1 de Enero de 1970 var ahora = Date.now() // Cicla hasta que Date.now() es 1000 milisegundos (1 segundo) o más // en el futuro respecto del comienzo del ciclado. En cada ciclo, llama a sumaUno while (Date.now() - ahora < 1000) sumaUno() // Finalmente pasaron >= 1000ms, entonces vamos a imprimir el total console.log(contador)}medirVelocidadCiclo()

Copiar e Pega o código anterior na túa consola de JavaScript e despois dun segundo debes imprimir un número. No meu ordenador vexo 8527360, aproximadamente 8,5 millóns. Nun segundo JavaScript pode chamar sumaUno 8,5 millóns de veces! Entón, se ten un código síncrono descargando unha foto e a foto toma un segundo, significa que está preventualmente impedindo a execución de 8,5 millóns de operacións mentres que JavaScript está bloqueado.

Algúns idiomas teñen un Función chamada Bloqueando a execución por varios segundos. Por exemplo, hai un código de bash executando Terminal.app en Mac OS que usa sleep .. Cando execute o comando sleep 3 && echo 'me desperté' para 3 segundos antes de imprimir me desperté.

JavaScript non ten unha función sleep. Como es un gato, probablemente estás preguntando: “Por que estou aprendendo unha linguaxe de programación que non ve o sono?” Pero non deixe. No canto de depender de sleep para esperar a que ocorresen as cousas, o deseño de JavaScript anima o uso de funcións. Se ten que esperar que a tarefa A antes de comezar a tarefa B, coloque todo o código da tarefa B nunha función e chama só cando termine.

Por exemplo, este é o código de bloqueo:

a()b()

e isto non está bloqueando:

a(b)

na versión non bloqueadora, b é unha devolución de chamada de a. Na versión de bloqueo e b son 2 chamados / invocados (os dous teñen () Que executa as funcións de inmediato). Na versión non bloqueada notarás que só é invocado e b é simplemente por última vez en a como argumento.

Na versión de bloqueo non hai relación explícita entre a e b. Na versión non bloqueada, o traballo de a é facer o que precisa e, a continuación, chamar b cando remata. Usar funcións neste modo chámase Callbacks porque a súa función de devolución de chamada, neste caso b, chámase cando a acaba facendo o que necesita .

Aquí hai un pseudocódigo coa implementación de como debería ver a:

function a(fin) { descargar('https://pbs.twimg.com/media/B4DDWBrCEAA8u4O.jpg:large', function finDescarga(error, png) { // manejá el error si hay alguno if (error) console.log('ups!', error) // llamá a fin cuando termines fin() })}

imos volver ao noso exemplo de non ventilación, a(b), onde chamamos a e imos pasalo b como o primeiro argumento. Na definición da función a anterior, o argumento fin é a nosa función b que pasou a el. Este comportamento é difícil de entender ao principio. Cando chama unha función, os argumentos que gasta non terán necesariamente os mesmos nomes de variables que cando están dentro dunha función. Neste caso o que chamamos b é fin dentro da función. Pero b e fin son só nomes de variables que apuntan á mesma función subxacente. Normalmente, as funcións de devolución de devolución están marcadas con nomes como fin ou callback para deixar claro que estas funcións deben ser chamadas cando a función actual remata a súa traballo.

Entón, mentres que a faga o seu traballo e chame b cando remate, ambos a e b son chamados nas súas versións bloqueadas e non bloqueadas. A diferenza é que na versión non bloqueadora non bloqueamos a execución de JavaScript. En xeral, o estilo sen bloqueo é onde escribe calquera función para devolver o máis rápido posible, sen bloquear en calquera momento.

Para ir a un pouco máis profundo: se a Tomé un segundo para completar e usa a versión bloqueada, significa que pode facer unha cousa. Se usa a versión non bloqueadora (usando Callbacks) pode literalmente, pode ter millóns de outras cousas no mesmo segundo, o que significa que pode rematar o seu traballo millóns de veces máis rápido e durmir o resto do día.

Lembre-la: o calendario é de ser vago e debe ser o que dorme e non o seu ordenador.

con sorte que podes ver agora como os devolucións son só funcións que chaman a outras funcións despois dun asíncrono tarefa. Algúns exemplos clásicos de tarefas asíncronas están a ler unha foto, descargando unha canción, cargando unha foto, falando coa base de datos, agarde a que un usuario presione unha tecla ou faga clic nunha ligazón, etc. Calquera cousa leva tempo. JavaScript é unha gran manipulación de tarefas asíncronas como aquelas que tardan o tempo para aprender a usar as chamadas e manter o seu JavaScript lonxe de ser bloqueado.

FIN!

Este é só o Inicio da túa relación con JavaScript! Non podes aprender todo desde un, pero podes buscar para ti e tentar aprender todos os conceptos aquí.

Recoméndovos que volva mañá e faga todo de novo desde o principio! Pode levar algúns pases ata que entenda todo (a programación é difícil). Só ten que tentar a lectura desta páxina en cuartos que conteñen obxectos brillantes … pode ser increíblemente distrativo.

Ten algún outro tema que queira que estea cuberto? Abre un problema para iso en GitHub.

# Reading recomendado

JavaScript para gatos Salte Moitos detalles que non son importantes para comezar (os gatos non son famosos pola súa atención), senón Se pensas que debes aprender en profundidade, mira isto:

Nota do tradutor: a información das seguintes ligazóns está en inglés. Desafortunadamente, a bibliografía é escasa en español. Tómao como unha boa escusa para aprender unha nova lingua (ademais de javascript)

  • nodeschool.io é un software educativo de código aberto manexado pola comunidade que ensina diferentes áreas de desenvolvemento web nun interactivo formato e auto-guiado. Axudei a facer nodeschool! Desafortunadamente este sitio ten menos gatos.
  • elocant javascript é un libro gratuíto que che ensina javascript! É moi bo! Especialmente o capítulo chamado valores, variables e fluxo de control
  • JavaScript Mozilla Guide tamén ten un excelente capítulo chamado valores, variables e literales
  • JS Standard Standing Guide é un para estilo JavaScript que uso.

# Clientes satisfechos

Cliente satisfeito
Cliente satisfeito
Cliente satisfeito
Cliente satisfeito
Cliente satisfeito

jsforcats.com es un traballo en progreso con amor de @maxogen. Si Quieres Contribuir con este material y mejorarlo, o repo de github está por acá.

consola

el tradutor @impronunciable también es amigo de algunos gatos

consola

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *