SlideShare una empresa de Scribd logo
1 de 58
Descargar para leer sin conexión
Arquitectura
   de Servicios Telemáticos




JavaScript para Programadores Java

Departamento de Ingeniería de Sistemas Telemáticos
Índice
JavaScript vs Java
●


●
    Sentencias, comentarios
●
    Variables
●
    Estructuras de control
●
    Funciones
●
    Objetos


                       JavaScript para Programadores Java   2
JavaScript
●
    Como ya hemos visto, JavaScript no viene
    de “Java”
●
    Vamos a ver similitudes y diferencias




                       JavaScript para Programadores Java   3
Lenguaje compilado vs
            interpretado
●
    Java:
        – Lenguaje compilado → se genera lenguaje
          máquina (.class) que se ejecuta en la JVM
●
    JavaScript:
        – Lenguaje interpretado por un intérprete
            • En el navegador (JS en cliente)
            • En el servidor (p. ej. node.js)
        – ¡No compilamos!
            • ¡Detectamos errores de sintaxis en tiempo de
              ejecución!
                            JavaScript para Programadores Java   4
Programando...
●
    Java:
        – Programamos clases
        – El programa 'empieza' cuando llamamos a
          una clase ejecutable (método main) o a un
          método público de clase (static) de una
          clase
●
    JavaScript:
        – Programamos 'sentencias', no tienen que ir
          'dentro de una clase'.
                         JavaScript para Programadores Java   5
Sentencias
●
    Java
       – Las sentencias terminan en “;”
       – Ej. String s = “hola”;
●
    JavaScript
       – Las sentencias terminan en ”;”
       – Ej. var s = “hola”;

                           Declarar variables: con var y sin tipo


                        JavaScript para Programadores Java          6
Comentarios
●
    Java
       – De línea //
       – De bloque /* … */
●
    JavaScript                 // Comentario de una línea
                               /* Comentario
       – De línea //              De varias líneas */

       – De bloque /* … */


                               ¡Igual en Java/Javascript!

                        JavaScript para Programadores Java   7
Variables Java (I)
●
    Java es un lenguaje fuertemente tipado:
    cada variable debe declarar su tipo antes
    de usarse
Ej.
●



           String s = “hola”;




                                JavaScript para Programadores Java   8
Variables JavaScript (II)
●
    JavaScript es un lenguaje débilmente
    tipado:
       – debemos declarar una variable (mediante
         var), pero no declaramos su tipo.
       – El tipo se infiere del contenido que tenga
Ej.
●
            var s;
            s = “hola”;
            s = 9.3;




                          JavaScript para Programadores Java   9
Tipos de datos Java (I)
●
    Java distingue dos tipos de datos:
        – Primitivos: byte, short, int, long, float,
          double, char, boolean
        – Referencias: objetos, arrays e interfaces




                          JavaScript para Programadores Java   10
Tipos de datos: JS (II)
●
    Primitivos:
        – number
            • No distingue entre entero y flotante. Todos
              son flotantes
                             var pi = 3.14159;
        – string             var nombre = 'pepe'; // o usa “pepe”
                             var abierto = true;
        – boolean
●
    Tipos compuestos: “Objetos”, funciones,
    arrays, null y undefined.

                            JavaScript para Programadores Java      11
Ejemplo




  JavaScript para Programadores Java   12
Operadores
●
    Son igual que en Java
●
    Aritméticos:
        – Incremento/Decremento (++/--)
        – Operaciones básicas: + - * / %
        – Comparación: < <= > >= == !=
        – Asignación: = += -= *= **= /= %= <<= >>=
●
    Lógicos:                         Nuevo, equivale a Math.sqrt()
        – && || !
                         JavaScript para Programadores Java          13
Operadores – Idéntico/igual
●
    Java
        – == // equals
                                                    Implicit casting: coercion
●
    JavaScript
        – == (Igual, mismo valor) // !=
            • Ej. T: “23” == 23; 4 == 4.0; “hola” == “hola”; null == null
            • Ej. F: “Pepe” == “pepe”, NaN == NaN,
        – === (Idéntico, mismo tipo y mismo valor) // !==
            • Ej. T: 4 === 4.0
            • Ej. F: “23” === 23
                                                                 Not a Number


                                   JavaScript para Programadores Java            14
Conversión de tipos
●
    Funciones: parseInt(), parseFloat()
Ej.
●


        – var s = 5 + parseInt(“3”); // s = 8
        – var s = 5 + parseInt(“3.0”); // s = 8.0
●
    Evaluar una expresión: eval()
●
    Ej. var s = eval(“(5 + 3) * 2”); // s = 16


                           JavaScript para Programadores Java   15
Estructuras de control
●
    Condicionales
       – if
       – if /else
       – switch
●
    Bucles
       – while-do
       – do-while
       – for
       – for-each
                    JavaScript para Programadores Java   16
Condicional if/else
●
    Condicional simple Java/JavaScript
       – if (condición) {expr-if}
       – if (condición) {expr-if} else {expr-else};
       – s = condición ? expr-if : expr-else;
           if (nota >= 5) {
              resultado = “aprobado”;
           } else {
              resultado = “suspenso”;
           }



                                        ¡Igual en Java/Javascript!

                                 JavaScript para Programadores Java   17
Condicional switch
 ¡Igual en Java/Javascript!        En Java7 los switch admiten String



                                     switch (color) {
switch (opcion) {
                                       case “azul”:
  case 1:
                                       case “verde”:
      direccion = “izda”;
                                           color = “frío”;
      break;
                                           break;
  case 2:
                                       case “rojo”:
      direccion = “dcha”;
                                           color = “cálido”;
      break;
                                           break;
  default:
                                       default:
      direccion = “recto”;
                                           color = “frío”;
      break;
                                           break;
}
                                     }


                              JavaScript para Programadores Java        18
Bucle while-do



var i = 0;
var s;
while (i < 10) {
  s += i;
  i++;
}
                            ¡Igual en Java/Javascript!




                   JavaScript para Programadores Java    19
Bucle do-while



var i = 0;
var s;
do {
  s += i;
  i++;
} while (i < 10);
                             ¡Igual en Java/Javascript!




                    JavaScript para Programadores Java    20
Bucle for




int s = 0;                         var s = 0;
for (int i = 0; i < 10; i++){      for (var i = 0; i < 10; i++) {
  s += i;                           s += i;
}                                  }




                                              ¡Igual en Java/Javascript!

                                   JavaScript para Programadores Java      21
Bucle for-each / for-in



String [] a = {“hola”, “adiós”};        var curso = new Curso(“TEWC”, 2);
for (String s : a){                     for (var prop in curso) {
  System.out.println(“Valor “ + s);       document.write(curso[prop]);
}                                       }




                           Java: bucle for-each para arrays y colecciones
                         JavaScript: bucle for-in para propiedades de objetos

                                        JavaScript para Programadores Java      22
Funciones en JS
● En Java no hay funciones, hay métodos
  dentro de las clases
● En JS, las funciones son un tipo de objeto

  más.




                     JavaScript para Programadores Java   23
Funciones en JS



public int suma(int a, int b) {{
           suma (int a, int b)                     function suma (a, b) {
  return a + b;                                      return a + b;
}                                                  }


public void imprime (int a) {                     function imprime (a) {
  System.out.println(“Num “ + a);                   document.write(“Num “ + a);
}                                                 }


                - No indicamos si devuelve (o no) algo una función.
                - Si no devuelve nada, devuelve undefined
                - No indicamos tipos
                - Palabra clave function para definir funciones
                                       JavaScript para Programadores Java         24
Llamando a funciones JS
     directamente desde HTML
      <script type=”text/javascript”>function hola() {alert(“¡hola!”);}</script>


Desde HTML, en un enlace
●


     <a href=”JavaScript:hola()”>Pincha aquí</a>


●
    Desde HTML, en un evento
     <input type=”button” value=”Di hola” onClick=”hola();” />




                                       JavaScript para Programadores Java          25
Funciones anónimas
●
    Podemos asignar directamente una función
    a una variable sin darle nombre




                      JavaScript para Programadores Java   26
Closures (Clausuras)
●
    Una clausura es una función anónima definida dentro de
    otra función
        – Mientras la función externa exista, devuelve una
          referencia a la función interna
        – Así podemos llamar a la función interna
        – La clausura permite que la función interna acceda a las
          variables de la función externa, aún cuando esa función
          haya terminado
        – Es decir, la clausura retiene una referencia al entorno
          donde fue creado (variables locales, etc.)
●
    No existe en Java (aún) pero sí en otros lenguajes como
    Perl, Python, Lisp o Scheme
                                JavaScript para Programadores Java   27
Ejemplo Clausuras




       JavaScript para Programadores Java   28
Funciones anónimas que se
   autollaman (self-invoking)
(function() {...})


(function(){
   document.write("hola");
}())




                             JavaScript para Programadores Java   29
Alcance (Scope)
●
    En JS, si declaramos una variable, tiene
    ámbito / alcance global
●
    Las variables definidas dentro de una
    función son (i) locales si se definen con var
    o (ii) globales




                        JavaScript para Programadores Java   30
Excepciones
var edad = prompt("Introduce edad","");       if (edad < 18) {
document.write("Edad " + edad);                 alert("Menor de edad");
try {                                         } else if (edad > 65) {
   if ((edad > 100) || (edad < 0)) {            alert ("Jubilado");
       throw "FueraRango";                    } else {
   } else if (edad == null) {                   alert("Adulto");
       throw "CampoNull";                     }
   } else if (edad == "") {
       throw "CampoVacio";
   } else if (isNaN(edad)) {
       throw "CampoNoNumerico";
   }

}catch(err){
  alert ("Error " + err);
  return;
}

                                     JavaScript para Programadores Java   31
Excepciones
●
    Sigue el patrón try-catch-finally, pero...
La excepción err del catch es un objeto con campos
●


 err.name y err.message
En JS:
●


        – EvalError: uso incorrecto de eval()
        – RangeError: rango incorrecto númerico
        – ReferenceError: referencia incorrecta (p.ej. Variable no
          definida)
        – SyntaxError: error de sintaxis en eval()
        – TypeError: tipo incorrecto
●
    throw no lanza un objeto excepción, sino un String
                                  JavaScript para Programadores Java   32
Objetos en Java
●
    Java es un lenguaje orientado a objetos
    basado en clases
En Java las clases definen
●


        – Atributos comunes
        – Métodos comunes
●
    para todos los objetos de una clase
●
    Si queremos añadir una propiedad, hay que
    cambiar la clase y añadirlo ahí
                        JavaScript para Programadores Java   33
Objetos en JavaScript
●
    JavaScript es un lenguaje orientado a
    objetos sin clases, se basa en prototipos
●
    Podemos crear un objeto, y añadirle
    atributos una vez creado
●
    Al crearlo, podemos indicar 'un prototipo'
●
    Si añadimos un atributo a un prototipo, se
    añade los objetos creados conforme a ese
    prototipo

                        JavaScript para Programadores Java   34
Crear objetos - Constructor
● Podemos usar new para construir un objeto
  seguido de un nombre de una función
●JS tiene varios constructores predefinidos:

  Object(), Date(), Array(), RegExp()

var p = new Object();
                                            var producto = new Object();
var d = new Date(“November 21, 2011”);
                                            producto.nombre = “libro”;
var a = new Array(“a”, “b”, “c”);
                                            producto.precio = 3;
Var e = new RegExp(“^[a-zA-Z]”);




                                  JavaScript para Programadores Java       35
Crear objetos - propiedades


    var producto;
    producto.nombre = “libro”;
    producto.precio = 3;




                          JavaScript para Programadores Java   36
Crear objeto - literales


      var producto = {
        nombre: 'libro',
        precio: 3
      };




                 JavaScript para Programadores Java   37
Crear métodos

var producto = new Object();
producto.nombre = “libro”;
producto.precio = 3;
producto.muestra = imprimir;
function imprimir(){
  document.write(“El producto es un “ + producto.nombre + “<br/>”);
  document.write(“El producto cuesta “ + producto.precio + “<br/>”);
}

producto.muestra();
producto.precio = 4;
producto.muestra();




                                  JavaScript para Programadores Java   38
Clases
●
    Para definir una clase en JS, simplemente
    definimos una función (el constructor), y
    luego creamos los objetos con new
    seguido del constructor
●
    Usamos this para acceder al objeto en el
    constructor
    function Producto(){
      this.nombre = “libro”;
      this.precio = 3;
    }
    var producto = new Producto();
    document.write(“Producto “ + producto.nombre);

                                    JavaScript para Programadores Java   39
Clases con métodos


function Producto(){
  this.nombre = “libro”;
  this.precio = 3;
  this.muestra = imprimir;
}
function imprimir(){
  document.write(“El producto es un “ + producto.nombre + “<br/>”);
  document.write(“El producto cuesta “ + producto.precio + “<br/>”);
}
var producto = new Producto();
document.write(“Producto “ + producto.muestra());




                              JavaScript para Programadores Java       40
Métodos en línea

var producto = {
  nombre: “libro”,
  precio: 3,
  muestra: function(){
     document.write(“El producto es un “ + this.nombre + “<br/>”);
     document.write(“El producto cuesta “ + this.precio + “<br/>”);
  }
};

document.write(“Producto “ + producto.muestra());




                               JavaScript para Programadores Java     41
Métodos en literales

function Producto(){
  this.nombre = “libro”;
  this.precio = 3;
  this.muestra = function(){
      document.write(“El producto es un “ + this.nombre + “<br/>”);
      document.write(“El producto cuesta “ + this.precio + “<br/>”);
}
var producto = new Producto();
document.write(“Producto “ + producto.muestra());




                                    JavaScript para Programadores Java   42
Sentencia with

function Producto(){
  this.nombre = “libro”;
  this.precio = 3;
  this.muestra = function(){
      document.write(“El producto es un “ + this.nombre + “<br/>”);
      document.write(“El producto cuesta “ + this.precio + “<br/>”);
}
var producto = new Producto();
with (producto) { // abreviatura
  document.write(“Producto “ + nombre + “ “ + precio + “ “ + muestra());




                                     JavaScript para Programadores Java    43
Iterador for-in
function Producto(){
  this.nombre = “libro”;
  this.precio = 3;
  this.muestra = function(){
       document.write(“El producto es un “ + this.nombre + “<br/>”);
       document.write(“El producto cuesta “ + this.precio + “<br/>”);
}
function itera(obj){
  for (prop in ojb){
          document.write(“Prop: “ + prop + “ valor “ + obj[prop]);
  }
}
var producto = new Producto();
itera(producto);




                               JavaScript para Programadores Java       44
Ejemplo for/in




     JavaScript para Programadores Java   45
Prototipos
●Todos los objetos en JS tienen una
  propiedad 'prototype'
● Si añadimos una propiedad/método al

  prototipo, se añade a todos los objetos de
  la clase




                     JavaScript para Programadores Java   46
Prototipos
       function Producto(nombre, precio){
         this.nombre = nombre;
         this.precio = precio;
         this.muestra = function(){
             document.write(“El producto es un “ + this.nombre + “<br/>”);
             document.write(“El producto cuesta “ + this.precio + “<br/>”);
       }
       var producto1 = new Producto(“libro”, 3);
       var producto2 = new Producto(“cuadro”, 4);
       Producto.prototype.marca = “ACME”;
       document.write(producto1.nombre + “ es de la marca “ +
                         producto1.marca + “<br/>”);
       document.write(producto2.nombre + “ es de la marca “ +
                         producto2.marca + “<br/>”);
Cuando accedemos a una propiedad, JS mira en orden:
 - si el objeto tiene la propiedad, devuelve el valor
- si el prototipo del objeto tiene la propiedad, devuelve el valor
- si Object tiene la propiedad, devuelve el valor
- si no, devuelve undefined               JavaScript para Programadores Java   47
Subclases




   JavaScript para Programadores Java   48
Bibliotecas de JavaScript
●   JavaScript “Core Objects”
       –   Arrays
       –   Date
       –   Math
       –   String




                       JavaScript para Programadores Java   49
Arrays

String [] meses = new String[3];                     var meses = new Array();
meses[0] = “Enero”;                                  meses[0] = “Enero”;
meses[1] = “Febrero”;                                meses[1] = “Febrero”;
String [] dias1 = new String[3];                     var dias = new Array(3);
String [] dias = {“lunes”, “martes”, “miercóles”};   var dias = {“lunes”, “martes”, “miercóles”};
for (String dia in dias) {                           for (var i in dias) {
     System.out.println(“Día “ + dia);                    document.write(“dias[“ + i + “] : ” +
}                                                              dias[i] + “ <br/>”);
                                                     }
Int [] numeros = new int[10];                        var numeros = new Array(10);
for (int i = 0; i < numeros.length; i++) {           for (var i = 0; i < numeros.length; i++) {
  numeros[i] = i;                                      numeros[i] = i;
}                                                    }




                                             JavaScript para Programadores Java              50
Arrays bidimensionales
                     (de filas)

int [][] a1 = new int [3][3]; // y relleno           var a1 = new Array(new Array(1, 2, 3),
                                                                new Array(2, 3, 4),
                                                                new Array(4, 5 6));
int [][] a2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}};    var a2 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]];
for (int i = 0; i < a1.length; i++) {                for (var i = 0; i < a1.length; i++) {
  for (int j = 0; j < a1[0].length; j++) {             for (var j = 0; j < a1[0].length; j++) {
     System.out.println(“valor “ + a[i][j]);              document.write(“valor “ + a[i][j] + “<br >”);
  }                                                    }
}                                                    }



                                                      En JS los arrays también son objetos.
                                                    Tienen métodos como sort(), toString(), …
                                                              No tienen longitud fija

                                                    JavaScript para Programadores Java              51
Date

var fecha = new Date();
fecha.setFullDate(2011, 10, 24); //24/11/2010, mes empieza en 0
var dia = fecha.getDay();
var mes = fecha.getMonth();
var anno = fecha.getYear();




                        JavaScript para Programadores Java        52
Objecto Math

Math.PI;
Math.abs(num);
Math.asin(num);
Math.max(num1, num2);
Math.min(num1, num2);
Math.pow(x, y);
Math.random();
Math.toString(num);
Math.sqrt(num);




                        JavaScript para Programadores Java   53
Objecto String


String s = “Hola”;                          var s = “Hola”;
System.out.println(“” + s.length();         document.write(“” + s.length + “<br>”);
System.out.println(“” + s.toUpperCase();    document.write(“” + s.toUpperCase() + “<br>”);
System.out.println(“” + s.substring(2,3);   document.write(“” + s.substr(2, 3) + “<br>”);
System.out.println(“” + s.charAt(1);        document.write(“” + s.chartAt(1) + “<br>”);




                                            JavaScript para Programadores Java         54
Funciones como objetos (I)
●
    Las funciones en JS son un tipo de objeto
    como otro cualquiera
●
    Podemos declarar una función
                  function hola() {
                    alert('¡hola!');
                  }

●
    Definir una variable de tipo función
                 var saluda = hola;
                 saluda();


                             JavaScript para Programadores Java   55
Funciones en JS (II)
●
    Añadir propiedades a una función
                 hola.idioma = 'español';
                 alert(hola.idioma);
                 alert(hola.constructor);

●
    Devolver una función desde otra función
              function holaMatutino() {
                return hola;
              }
              var saludo = holaMatutino();
              saludo();



                             JavaScript para Programadores Java   56
Funciones en JS (III)
●
    Los métodos simplemente son propiedades
    cuyo tipo es función

              var producto = {
                nombre: 'libro',
                precio: 3,
                Imprime: function() { alert('hola'};}
              };




                             JavaScript para Programadores Java   57
Referencias




    JavaScript para Programadores Java   58

Más contenido relacionado

La actualidad más candente

Resilience4j with Spring Boot
Resilience4j with Spring BootResilience4j with Spring Boot
Resilience4j with Spring BootKnoldus Inc.
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git RightSven Peters
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump AnalysisDmitry Buzdin
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practicesfelixbillon
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllThomas Wuerthinger
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8Talha Ocakçı
 
Faster PHP apps using Queues and Workers
Faster PHP apps using Queues and WorkersFaster PHP apps using Queues and Workers
Faster PHP apps using Queues and WorkersRichard Baker
 
Introduction to Java Programming Language
Introduction to Java Programming LanguageIntroduction to Java Programming Language
Introduction to Java Programming Languagejaimefrozr
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
Migration from Procedural to OOP
Migration from Procedural to OOP Migration from Procedural to OOP
Migration from Procedural to OOP GLC Networks
 
Coding standards for java
Coding standards for javaCoding standards for java
Coding standards for javamaheshm1206
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
Introduction to basics of java
Introduction to basics of javaIntroduction to basics of java
Introduction to basics of javavinay arora
 

La actualidad más candente (20)

Java SE 8 best practices
Java SE 8 best practicesJava SE 8 best practices
Java SE 8 best practices
 
Java Tutorial
Java TutorialJava Tutorial
Java Tutorial
 
Resilience4j with Spring Boot
Resilience4j with Spring BootResilience4j with Spring Boot
Resilience4j with Spring Boot
 
core java
core javacore java
core java
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump Analysis
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practices
 
Clean code
Clean codeClean code
Clean code
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Faster PHP apps using Queues and Workers
Faster PHP apps using Queues and WorkersFaster PHP apps using Queues and Workers
Faster PHP apps using Queues and Workers
 
Introduction to Java Programming Language
Introduction to Java Programming LanguageIntroduction to Java Programming Language
Introduction to Java Programming Language
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Migration from Procedural to OOP
Migration from Procedural to OOP Migration from Procedural to OOP
Migration from Procedural to OOP
 
TestNG
TestNGTestNG
TestNG
 
Coding standards for java
Coding standards for javaCoding standards for java
Coding standards for java
 
Tratamento de erros
Tratamento de errosTratamento de erros
Tratamento de erros
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Introduction to basics of java
Introduction to basics of javaIntroduction to basics of java
Introduction to basics of java
 

Destacado

Aprende JavaScript
Aprende JavaScriptAprende JavaScript
Aprende JavaScriptAlf Chee
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java scriptRenny Batista
 
Introducción Arduino - Proyecto BitABit
Introducción Arduino - Proyecto BitABitIntroducción Arduino - Proyecto BitABit
Introducción Arduino - Proyecto BitABitJose Manuel Mencia Leal
 
Cylon.js - Javascript for Robotics Projects
Cylon.js - Javascript for Robotics ProjectsCylon.js - Javascript for Robotics Projects
Cylon.js - Javascript for Robotics ProjectsLuis Toscano
 
Comparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusComparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusAbefo
 
RESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPTRESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPTAlejito Laaz
 
Desarrollo de Juegos con HTML5 y JavaScript - Modern Web Event
Desarrollo de Juegos con HTML5 y JavaScript - Modern Web EventDesarrollo de Juegos con HTML5 y JavaScript - Modern Web Event
Desarrollo de Juegos con HTML5 y JavaScript - Modern Web EventMarcos Gonzalez
 
Introducción a Android: 10 cosas importantes que hay que entender
Introducción a Android: 10 cosas importantes que hay que entenderIntroducción a Android: 10 cosas importantes que hay que entender
Introducción a Android: 10 cosas importantes que hay que entenderjezabelink
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePointAdrian Diaz Cervera
 
Desarrollador c,c++
Desarrollador c,c++Desarrollador c,c++
Desarrollador c,c++202527
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 
Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995ADWE Team
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?Micael Gallego
 

Destacado (20)

Lenguaje objective c
Lenguaje objective cLenguaje objective c
Lenguaje objective c
 
Aprende JavaScript
Aprende JavaScriptAprende JavaScript
Aprende JavaScript
 
JavaScript Avanzado
JavaScript AvanzadoJavaScript Avanzado
JavaScript Avanzado
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java script
 
JavaScript desde Cero
JavaScript desde CeroJavaScript desde Cero
JavaScript desde Cero
 
Introducción Arduino - Proyecto BitABit
Introducción Arduino - Proyecto BitABitIntroducción Arduino - Proyecto BitABit
Introducción Arduino - Proyecto BitABit
 
20160229 SET Meetup Internet of Things
20160229 SET Meetup Internet of Things20160229 SET Meetup Internet of Things
20160229 SET Meetup Internet of Things
 
Cylon.js - Javascript for Robotics Projects
Cylon.js - Javascript for Robotics ProjectsCylon.js - Javascript for Robotics Projects
Cylon.js - Javascript for Robotics Projects
 
Comparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusComparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplus
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
Javascript
JavascriptJavascript
Javascript
 
RESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPTRESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPT
 
Desarrollo de Juegos con HTML5 y JavaScript - Modern Web Event
Desarrollo de Juegos con HTML5 y JavaScript - Modern Web EventDesarrollo de Juegos con HTML5 y JavaScript - Modern Web Event
Desarrollo de Juegos con HTML5 y JavaScript - Modern Web Event
 
Introducción a Android: 10 cosas importantes que hay que entender
Introducción a Android: 10 cosas importantes que hay que entenderIntroducción a Android: 10 cosas importantes que hay que entender
Introducción a Android: 10 cosas importantes que hay que entender
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePoint
 
Desarrollador c,c++
Desarrollador c,c++Desarrollador c,c++
Desarrollador c,c++
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995
 
Java script
Java scriptJava script
Java script
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 

Similar a JavaScript para Programadores Java

Similar a JavaScript para Programadores Java (20)

JavaScript para desarrolladores c#
JavaScript para desarrolladores c#JavaScript para desarrolladores c#
JavaScript para desarrolladores c#
 
Lenguaje de Alto Nivel
Lenguaje de Alto NivelLenguaje de Alto Nivel
Lenguaje de Alto Nivel
 
Javascript
JavascriptJavascript
Javascript
 
Javascript C#
Javascript C#Javascript C#
Javascript C#
 
Java12
Java12Java12
Java12
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Ricardo jsp
Ricardo jspRicardo jsp
Ricardo jsp
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
Java
Java Java
Java
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVM
 
Java argumentos variables
Java argumentos variablesJava argumentos variables
Java argumentos variables
 
Javascript continuación
Javascript   continuaciónJavascript   continuación
Javascript continuación
 
Programar java
Programar javaProgramar java
Programar java
 

Más de Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 

Último

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Último (20)

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

JavaScript para Programadores Java

  • 1. Arquitectura de Servicios Telemáticos JavaScript para Programadores Java Departamento de Ingeniería de Sistemas Telemáticos
  • 2. Índice JavaScript vs Java ● ● Sentencias, comentarios ● Variables ● Estructuras de control ● Funciones ● Objetos JavaScript para Programadores Java 2
  • 3. JavaScript ● Como ya hemos visto, JavaScript no viene de “Java” ● Vamos a ver similitudes y diferencias JavaScript para Programadores Java 3
  • 4. Lenguaje compilado vs interpretado ● Java: – Lenguaje compilado → se genera lenguaje máquina (.class) que se ejecuta en la JVM ● JavaScript: – Lenguaje interpretado por un intérprete • En el navegador (JS en cliente) • En el servidor (p. ej. node.js) – ¡No compilamos! • ¡Detectamos errores de sintaxis en tiempo de ejecución! JavaScript para Programadores Java 4
  • 5. Programando... ● Java: – Programamos clases – El programa 'empieza' cuando llamamos a una clase ejecutable (método main) o a un método público de clase (static) de una clase ● JavaScript: – Programamos 'sentencias', no tienen que ir 'dentro de una clase'. JavaScript para Programadores Java 5
  • 6. Sentencias ● Java – Las sentencias terminan en “;” – Ej. String s = “hola”; ● JavaScript – Las sentencias terminan en ”;” – Ej. var s = “hola”; Declarar variables: con var y sin tipo JavaScript para Programadores Java 6
  • 7. Comentarios ● Java – De línea // – De bloque /* … */ ● JavaScript // Comentario de una línea /* Comentario – De línea // De varias líneas */ – De bloque /* … */ ¡Igual en Java/Javascript! JavaScript para Programadores Java 7
  • 8. Variables Java (I) ● Java es un lenguaje fuertemente tipado: cada variable debe declarar su tipo antes de usarse Ej. ● String s = “hola”; JavaScript para Programadores Java 8
  • 9. Variables JavaScript (II) ● JavaScript es un lenguaje débilmente tipado: – debemos declarar una variable (mediante var), pero no declaramos su tipo. – El tipo se infiere del contenido que tenga Ej. ● var s; s = “hola”; s = 9.3; JavaScript para Programadores Java 9
  • 10. Tipos de datos Java (I) ● Java distingue dos tipos de datos: – Primitivos: byte, short, int, long, float, double, char, boolean – Referencias: objetos, arrays e interfaces JavaScript para Programadores Java 10
  • 11. Tipos de datos: JS (II) ● Primitivos: – number • No distingue entre entero y flotante. Todos son flotantes var pi = 3.14159; – string var nombre = 'pepe'; // o usa “pepe” var abierto = true; – boolean ● Tipos compuestos: “Objetos”, funciones, arrays, null y undefined. JavaScript para Programadores Java 11
  • 12. Ejemplo JavaScript para Programadores Java 12
  • 13. Operadores ● Son igual que en Java ● Aritméticos: – Incremento/Decremento (++/--) – Operaciones básicas: + - * / % – Comparación: < <= > >= == != – Asignación: = += -= *= **= /= %= <<= >>= ● Lógicos: Nuevo, equivale a Math.sqrt() – && || ! JavaScript para Programadores Java 13
  • 14. Operadores – Idéntico/igual ● Java – == // equals Implicit casting: coercion ● JavaScript – == (Igual, mismo valor) // != • Ej. T: “23” == 23; 4 == 4.0; “hola” == “hola”; null == null • Ej. F: “Pepe” == “pepe”, NaN == NaN, – === (Idéntico, mismo tipo y mismo valor) // !== • Ej. T: 4 === 4.0 • Ej. F: “23” === 23 Not a Number JavaScript para Programadores Java 14
  • 15. Conversión de tipos ● Funciones: parseInt(), parseFloat() Ej. ● – var s = 5 + parseInt(“3”); // s = 8 – var s = 5 + parseInt(“3.0”); // s = 8.0 ● Evaluar una expresión: eval() ● Ej. var s = eval(“(5 + 3) * 2”); // s = 16 JavaScript para Programadores Java 15
  • 16. Estructuras de control ● Condicionales – if – if /else – switch ● Bucles – while-do – do-while – for – for-each JavaScript para Programadores Java 16
  • 17. Condicional if/else ● Condicional simple Java/JavaScript – if (condición) {expr-if} – if (condición) {expr-if} else {expr-else}; – s = condición ? expr-if : expr-else; if (nota >= 5) { resultado = “aprobado”; } else { resultado = “suspenso”; } ¡Igual en Java/Javascript! JavaScript para Programadores Java 17
  • 18. Condicional switch ¡Igual en Java/Javascript! En Java7 los switch admiten String switch (color) { switch (opcion) { case “azul”: case 1: case “verde”: direccion = “izda”; color = “frío”; break; break; case 2: case “rojo”: direccion = “dcha”; color = “cálido”; break; break; default: default: direccion = “recto”; color = “frío”; break; break; } } JavaScript para Programadores Java 18
  • 19. Bucle while-do var i = 0; var s; while (i < 10) { s += i; i++; } ¡Igual en Java/Javascript! JavaScript para Programadores Java 19
  • 20. Bucle do-while var i = 0; var s; do { s += i; i++; } while (i < 10); ¡Igual en Java/Javascript! JavaScript para Programadores Java 20
  • 21. Bucle for int s = 0; var s = 0; for (int i = 0; i < 10; i++){ for (var i = 0; i < 10; i++) { s += i; s += i; } } ¡Igual en Java/Javascript! JavaScript para Programadores Java 21
  • 22. Bucle for-each / for-in String [] a = {“hola”, “adiós”}; var curso = new Curso(“TEWC”, 2); for (String s : a){ for (var prop in curso) { System.out.println(“Valor “ + s); document.write(curso[prop]); } } Java: bucle for-each para arrays y colecciones JavaScript: bucle for-in para propiedades de objetos JavaScript para Programadores Java 22
  • 23. Funciones en JS ● En Java no hay funciones, hay métodos dentro de las clases ● En JS, las funciones son un tipo de objeto más. JavaScript para Programadores Java 23
  • 24. Funciones en JS public int suma(int a, int b) {{ suma (int a, int b) function suma (a, b) { return a + b; return a + b; } } public void imprime (int a) { function imprime (a) { System.out.println(“Num “ + a); document.write(“Num “ + a); } } - No indicamos si devuelve (o no) algo una función. - Si no devuelve nada, devuelve undefined - No indicamos tipos - Palabra clave function para definir funciones JavaScript para Programadores Java 24
  • 25. Llamando a funciones JS directamente desde HTML <script type=”text/javascript”>function hola() {alert(“¡hola!”);}</script> Desde HTML, en un enlace ● <a href=”JavaScript:hola()”>Pincha aquí</a> ● Desde HTML, en un evento <input type=”button” value=”Di hola” onClick=”hola();” /> JavaScript para Programadores Java 25
  • 26. Funciones anónimas ● Podemos asignar directamente una función a una variable sin darle nombre JavaScript para Programadores Java 26
  • 27. Closures (Clausuras) ● Una clausura es una función anónima definida dentro de otra función – Mientras la función externa exista, devuelve una referencia a la función interna – Así podemos llamar a la función interna – La clausura permite que la función interna acceda a las variables de la función externa, aún cuando esa función haya terminado – Es decir, la clausura retiene una referencia al entorno donde fue creado (variables locales, etc.) ● No existe en Java (aún) pero sí en otros lenguajes como Perl, Python, Lisp o Scheme JavaScript para Programadores Java 27
  • 28. Ejemplo Clausuras JavaScript para Programadores Java 28
  • 29. Funciones anónimas que se autollaman (self-invoking) (function() {...}) (function(){ document.write("hola"); }()) JavaScript para Programadores Java 29
  • 30. Alcance (Scope) ● En JS, si declaramos una variable, tiene ámbito / alcance global ● Las variables definidas dentro de una función son (i) locales si se definen con var o (ii) globales JavaScript para Programadores Java 30
  • 31. Excepciones var edad = prompt("Introduce edad",""); if (edad < 18) { document.write("Edad " + edad); alert("Menor de edad"); try { } else if (edad > 65) { if ((edad > 100) || (edad < 0)) { alert ("Jubilado"); throw "FueraRango"; } else { } else if (edad == null) { alert("Adulto"); throw "CampoNull"; } } else if (edad == "") { throw "CampoVacio"; } else if (isNaN(edad)) { throw "CampoNoNumerico"; } }catch(err){ alert ("Error " + err); return; } JavaScript para Programadores Java 31
  • 32. Excepciones ● Sigue el patrón try-catch-finally, pero... La excepción err del catch es un objeto con campos ● err.name y err.message En JS: ● – EvalError: uso incorrecto de eval() – RangeError: rango incorrecto númerico – ReferenceError: referencia incorrecta (p.ej. Variable no definida) – SyntaxError: error de sintaxis en eval() – TypeError: tipo incorrecto ● throw no lanza un objeto excepción, sino un String JavaScript para Programadores Java 32
  • 33. Objetos en Java ● Java es un lenguaje orientado a objetos basado en clases En Java las clases definen ● – Atributos comunes – Métodos comunes ● para todos los objetos de una clase ● Si queremos añadir una propiedad, hay que cambiar la clase y añadirlo ahí JavaScript para Programadores Java 33
  • 34. Objetos en JavaScript ● JavaScript es un lenguaje orientado a objetos sin clases, se basa en prototipos ● Podemos crear un objeto, y añadirle atributos una vez creado ● Al crearlo, podemos indicar 'un prototipo' ● Si añadimos un atributo a un prototipo, se añade los objetos creados conforme a ese prototipo JavaScript para Programadores Java 34
  • 35. Crear objetos - Constructor ● Podemos usar new para construir un objeto seguido de un nombre de una función ●JS tiene varios constructores predefinidos: Object(), Date(), Array(), RegExp() var p = new Object(); var producto = new Object(); var d = new Date(“November 21, 2011”); producto.nombre = “libro”; var a = new Array(“a”, “b”, “c”); producto.precio = 3; Var e = new RegExp(“^[a-zA-Z]”); JavaScript para Programadores Java 35
  • 36. Crear objetos - propiedades var producto; producto.nombre = “libro”; producto.precio = 3; JavaScript para Programadores Java 36
  • 37. Crear objeto - literales var producto = { nombre: 'libro', precio: 3 }; JavaScript para Programadores Java 37
  • 38. Crear métodos var producto = new Object(); producto.nombre = “libro”; producto.precio = 3; producto.muestra = imprimir; function imprimir(){ document.write(“El producto es un “ + producto.nombre + “<br/>”); document.write(“El producto cuesta “ + producto.precio + “<br/>”); } producto.muestra(); producto.precio = 4; producto.muestra(); JavaScript para Programadores Java 38
  • 39. Clases ● Para definir una clase en JS, simplemente definimos una función (el constructor), y luego creamos los objetos con new seguido del constructor ● Usamos this para acceder al objeto en el constructor function Producto(){ this.nombre = “libro”; this.precio = 3; } var producto = new Producto(); document.write(“Producto “ + producto.nombre); JavaScript para Programadores Java 39
  • 40. Clases con métodos function Producto(){ this.nombre = “libro”; this.precio = 3; this.muestra = imprimir; } function imprimir(){ document.write(“El producto es un “ + producto.nombre + “<br/>”); document.write(“El producto cuesta “ + producto.precio + “<br/>”); } var producto = new Producto(); document.write(“Producto “ + producto.muestra()); JavaScript para Programadores Java 40
  • 41. Métodos en línea var producto = { nombre: “libro”, precio: 3, muestra: function(){ document.write(“El producto es un “ + this.nombre + “<br/>”); document.write(“El producto cuesta “ + this.precio + “<br/>”); } }; document.write(“Producto “ + producto.muestra()); JavaScript para Programadores Java 41
  • 42. Métodos en literales function Producto(){ this.nombre = “libro”; this.precio = 3; this.muestra = function(){ document.write(“El producto es un “ + this.nombre + “<br/>”); document.write(“El producto cuesta “ + this.precio + “<br/>”); } var producto = new Producto(); document.write(“Producto “ + producto.muestra()); JavaScript para Programadores Java 42
  • 43. Sentencia with function Producto(){ this.nombre = “libro”; this.precio = 3; this.muestra = function(){ document.write(“El producto es un “ + this.nombre + “<br/>”); document.write(“El producto cuesta “ + this.precio + “<br/>”); } var producto = new Producto(); with (producto) { // abreviatura document.write(“Producto “ + nombre + “ “ + precio + “ “ + muestra()); JavaScript para Programadores Java 43
  • 44. Iterador for-in function Producto(){ this.nombre = “libro”; this.precio = 3; this.muestra = function(){ document.write(“El producto es un “ + this.nombre + “<br/>”); document.write(“El producto cuesta “ + this.precio + “<br/>”); } function itera(obj){ for (prop in ojb){ document.write(“Prop: “ + prop + “ valor “ + obj[prop]); } } var producto = new Producto(); itera(producto); JavaScript para Programadores Java 44
  • 45. Ejemplo for/in JavaScript para Programadores Java 45
  • 46. Prototipos ●Todos los objetos en JS tienen una propiedad 'prototype' ● Si añadimos una propiedad/método al prototipo, se añade a todos los objetos de la clase JavaScript para Programadores Java 46
  • 47. Prototipos function Producto(nombre, precio){ this.nombre = nombre; this.precio = precio; this.muestra = function(){ document.write(“El producto es un “ + this.nombre + “<br/>”); document.write(“El producto cuesta “ + this.precio + “<br/>”); } var producto1 = new Producto(“libro”, 3); var producto2 = new Producto(“cuadro”, 4); Producto.prototype.marca = “ACME”; document.write(producto1.nombre + “ es de la marca “ + producto1.marca + “<br/>”); document.write(producto2.nombre + “ es de la marca “ + producto2.marca + “<br/>”); Cuando accedemos a una propiedad, JS mira en orden: - si el objeto tiene la propiedad, devuelve el valor - si el prototipo del objeto tiene la propiedad, devuelve el valor - si Object tiene la propiedad, devuelve el valor - si no, devuelve undefined JavaScript para Programadores Java 47
  • 48. Subclases JavaScript para Programadores Java 48
  • 49. Bibliotecas de JavaScript ● JavaScript “Core Objects” – Arrays – Date – Math – String JavaScript para Programadores Java 49
  • 50. Arrays String [] meses = new String[3]; var meses = new Array(); meses[0] = “Enero”; meses[0] = “Enero”; meses[1] = “Febrero”; meses[1] = “Febrero”; String [] dias1 = new String[3]; var dias = new Array(3); String [] dias = {“lunes”, “martes”, “miercóles”}; var dias = {“lunes”, “martes”, “miercóles”}; for (String dia in dias) { for (var i in dias) { System.out.println(“Día “ + dia); document.write(“dias[“ + i + “] : ” + } dias[i] + “ <br/>”); } Int [] numeros = new int[10]; var numeros = new Array(10); for (int i = 0; i < numeros.length; i++) { for (var i = 0; i < numeros.length; i++) { numeros[i] = i; numeros[i] = i; } } JavaScript para Programadores Java 50
  • 51. Arrays bidimensionales (de filas) int [][] a1 = new int [3][3]; // y relleno var a1 = new Array(new Array(1, 2, 3), new Array(2, 3, 4), new Array(4, 5 6)); int [][] a2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; var a2 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]; for (int i = 0; i < a1.length; i++) { for (var i = 0; i < a1.length; i++) { for (int j = 0; j < a1[0].length; j++) { for (var j = 0; j < a1[0].length; j++) { System.out.println(“valor “ + a[i][j]); document.write(“valor “ + a[i][j] + “<br >”); } } } } En JS los arrays también son objetos. Tienen métodos como sort(), toString(), … No tienen longitud fija JavaScript para Programadores Java 51
  • 52. Date var fecha = new Date(); fecha.setFullDate(2011, 10, 24); //24/11/2010, mes empieza en 0 var dia = fecha.getDay(); var mes = fecha.getMonth(); var anno = fecha.getYear(); JavaScript para Programadores Java 52
  • 53. Objecto Math Math.PI; Math.abs(num); Math.asin(num); Math.max(num1, num2); Math.min(num1, num2); Math.pow(x, y); Math.random(); Math.toString(num); Math.sqrt(num); JavaScript para Programadores Java 53
  • 54. Objecto String String s = “Hola”; var s = “Hola”; System.out.println(“” + s.length(); document.write(“” + s.length + “<br>”); System.out.println(“” + s.toUpperCase(); document.write(“” + s.toUpperCase() + “<br>”); System.out.println(“” + s.substring(2,3); document.write(“” + s.substr(2, 3) + “<br>”); System.out.println(“” + s.charAt(1); document.write(“” + s.chartAt(1) + “<br>”); JavaScript para Programadores Java 54
  • 55. Funciones como objetos (I) ● Las funciones en JS son un tipo de objeto como otro cualquiera ● Podemos declarar una función function hola() { alert('¡hola!'); } ● Definir una variable de tipo función var saluda = hola; saluda(); JavaScript para Programadores Java 55
  • 56. Funciones en JS (II) ● Añadir propiedades a una función hola.idioma = 'español'; alert(hola.idioma); alert(hola.constructor); ● Devolver una función desde otra función function holaMatutino() { return hola; } var saludo = holaMatutino(); saludo(); JavaScript para Programadores Java 56
  • 57. Funciones en JS (III) ● Los métodos simplemente son propiedades cuyo tipo es función var producto = { nombre: 'libro', precio: 3, Imprime: function() { alert('hola'};} }; JavaScript para Programadores Java 57
  • 58. Referencias JavaScript para Programadores Java 58