Introducción a JavaScript

JavaScript República Dominicana

Una historia de amor y prejuicio

Hola, Señor E.

Hola, señor E.
Nos gustaría que diseñe un lenguaje interpretado ligero, similar a Java, que no sea orientado a objetos para ser usado en la próxima entrega de nuestro navegador.
Por cierto, que sea para el próximo miércoles.

Construyendo el lenguaje en 10 DÍAS

Poco tiempo

+

Requerimientos estrictos

+

Limitaciones

=

Decisiones dificiles


En última instancia, Eich se inspiró en Self y Scheme para desarrollar un nuevo lenguaje llamado Mocha.

Desorden de personalidad

Desarrollado como Mocha, desplegado como LiveScript, renombrado a JavaScript por (perversas) razones publicitarias, copiado* como JScript y finalmente estandarizado como ECMAScript.

Es evidente que JS dió muchos giros antes de ser lo que es hoy.

Sintaxis

Comentarios:
    // De una linea
    /*
        De
        Varias
        Lineas
     */ 

Enteros, flotantes y dobles:
    var age = 19;
    var priceOfGas = 262.10;
    var PI = 3.141592653590;

CONT.

Cadena de caracteres:
    var i = '<3 JavaScript (the good parts)';
    var msg = "It's quite easy to get up and running."; 

Arreglos:
    var fruits = ['banana', 'apple', 'orange', 'mango']; 

Objetos (hashes/diccionarios):
    var person = {
        firstName: 'Fulano',
        lastName: 'Perez',
        age: 35
    } 



Cont.

Funciones/Métodos:
    function getProductsMatching(query) {
        // code...
    } 

Clases**:
    function Person(firstName, lastName, age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }
    var her = new Person('Judith', 'Gómez', 18); // Made up person.

    her.firstName; // Judith 

CONT.

Ciclo for:
 var sum = 0; for (var i = 0; i < 10; i++) {    sum += i; }
Ciclo while:
 while(!conferenceStarted) {    // Chill...
 }

Cont.

Operador in:
 var politician = {    name: 'Rob Omucho',    age: 57,    persuadingSkills: [] };  'honesty' in politician; // false 'charisma' in politician; // false 'persuadingSkills' in politician; // true 

Cont.

Operador instanceof:
 69 instanceof Number; // true 'text' instanceof Array; // false {} instanceof Object; // true
var her = new Person(); her instanceof Person; // true

Cont.

Operador ===:
var number = 55;
var string = '55';

number == string; // true
number === string; // false 
Operador !==:
var array = [];
var object = {};

array == object; // true
array === object; // false 

Hmm... Huele como Java

Pero no.

JavaScript in Java; // false

JavaScript no es un subconjunto de Java.

JavaScript instanceof Java; //false

JavaScript no es una versión ligera de Java.

JavaScript === Java; // false

JavaScript no es Java para la web.

Y, cual es la diferencia?

  • Orientado a prototipos
  • Funciones como variables (first-class functions)
  • Ejecución ASÍNCRONA*
  • Es amado/odiado/amado por quienes lo conocen

Y, para que sirve?

  • La web

    • Hace que las cosas se muevan (comportamiento)

    • AJAX

  • El escritorio

    • Motor de ejecución (Engine)

  • Robotica, quizas?

    $('#conference-room').when('everyone:leaves').turnOff('.lights');

Eso demasiado bien, cual es el gancho?

  • {} + {} WTF...

  • Elevación de variables (variable hoisting)

  • Una gran flexibilidad conlleva una gran responsabilidad...

  • La ejecución asincrona confunde.

  • Y el resto de las partes malas.

  • Afortunadamente tenemos a:

    • Douglas Crockford

    • JSLint / JSHint

 

Preguntas?

Gracias por Asistir. :)

Introducción a JavaScript

By Francis Brito

Introducción a JavaScript

  • 945