0.2 == 0.30000000000000004 - Operaciones avanzadas y constantes con objeto Math Math.sin(3.5); var d = Math.PI * r * r; - Conversión de String a entero con parseInt() parseInt("123", 10); // 123 parseInt("010", 10); // 10 Numbers (JavaScript)
parseInt("hello", 10); // NaN - Se puede chequear el valor con isNaN() isNaN(NaN); // true - Por último está el valor Infinity 1 / 0; // Infinity -1 / 0; // -Infinity isFinite(1/0); // false isFinite(-Infinity); // false isFinite(NaN); // false Numbers (JavaScript)
0, string vacio (“”), NaN, null y undefined se convierten en false. - Todo otro valor se convierte en true. Boolean(""); // false Boolean(234); // true if (user.name) {...} Booleans (JavaScript)
igualdad es un poco más complicada. - Doble igual (==) realiza “type coercion” "dog" == "dog"; // true 1 == true; // true - Para evitarlo se usa triple igual (===) 1 === true; // false true === true; // true - Adicionalmente existen != y !== Operadores (JavaScript)
name = "kittens"; if (name == "puppies") { name += "!"; } else if (name == "kittens") { name += "!!"; } else { name = "!" + name; } name == "kittens!!" Estructuras de control (JavaScript)
clave-valor. - Son similares en otros lenguajes a: - Diccionarios en Python - Hashes en Ruby - HashMaps en Java - Arreglos asociativos en PHP - La clave siempres es un string, y el valor puede ser cualquier valor de JavaScript, incluyendo otro objeto. Objetos (JavaScript)
obj = {}; function Person(name, age) { this.name = name; this.age = age; } // Define an object var You = new Person("You", 24); // We are creating a new person named "you" // (that was the first parameter, and the age..) Objetos (JavaScript)
age; } // Define an object var You = new Person("You", 24); // We are creating a new person named "you" // (that was the first parameter, and the age..) Objetos (JavaScript)
de arquitectura para exponer servicios y recursos de sistemas informáticos. - No existe un estándar formal, pero sí convenciones y buenas prácticas. - Es la arquitectura por excelencia de muchos de los API actuales de grandes empresas. Twitter, Facebook, Instagram, etc. @JacobParraG Servicios RESTful
- GET: listar todos los usuarios - POST: crear un nuevo usuario - http://api.example.com/users/298 - GET: detalles del usuario 298 - PUT: actualizar el usuario 298 - DELETE: eliminar el usuario 298 @JacobParraG Servicios RESTful
Docs, Twitter, Facebook. • Aplicaciones con muchos CRUDs. • Separación entre frontend y backend. No es adecuada para desarrollo de juegos ni uso intensivo del DOM.
uno</a> <h3>El doble de la cuenta es: {{ 2 * count }}</h3> </div> Expresiones en directivas Cuando usamos directivas también podemos pasarle argumentos, al igual que una función. http://jsbin.com/zetud/1/edit
objectos angular que definen varias funcionalidades relacionadas en la app. Tiene dos operaciones principales: • Setter: angular.module('myApp', []); • Getter: angular.module('myApp');
comunicación entre componentes, particularmente entre nuestro javascript y el HTML. var app = angular.module('cellsApp', []) .run(function($rootScope) { $rootScope.user = { name: 'ucabistas' }; });
scopes. Sin embargo, $rootScope se mantiene en el nivel superior de todos. $rootScope $scope(Controlador A) $scope(Controlador B) $scope(ng-repeat de vinos)
como cualquier otro en tu código. También conocidos como plain old javascript object (POJO) En resumen: scopes son una manera de organizar pares de clave-valor sin contaminar el espacio de variables globales (global namespace)
a través de un grupo de elementos del DOM. Cada vez que definimos un controlador, angular crea un nuevo $scope debajo del scope padre donde se usa el controlador.
nuevo // $scope donde podemos colocar // la data para interactuar }); <div ng-controller="CellListCtrl"> <!-- Aquí tenemos acceso al objeto $scope definido en el controlador CellListCtrl --> </div> http://jsbin.com/jowezu/13/edit
"img/phones/nexus-s.0.jpg", "name": "Nexus S", "snippet": "Fast just got faster with Nexus S. A pure Google experience, Nexus S is the first phone to run Gingerbread (Android 2.3), the fastest version of Android yet." } http://jsbin.com/jowezu/15/edit
es asíncrona. Para retomar la ejecución del código tenemos dos opciones: • Pasar una función callback • Usar una promesa Las promesas son objetos que ayudan a trabajar con código asíncrono.
promesas: promise .then(function(data) { // Called when no errors have occurred with data }) .catch(function(err) { // Called when an error has occurred }) .finally(function(data) { // Called always, regardless of the output result })