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; // truevar 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