variable validar error javascript angularjs

javascript - error - validar undefined jquery



¿Por qué{{undefined+number}} devuelve el número? (2)

Esa es la ventaja de la interpolación.

AngularJS utiliza el marcado de interpolación con expresiones incrustadas para proporcionar enlace de datos a nodos de texto y valores de atributo.

Si el valor interpolado no es una cadena, se calcula de la siguiente manera:

  • undefined y null se convierten a '''' (cadena vacía)
  • Si el valor es un objeto que no es un Número, Fecha o Arreglo, $interpolate busca una función toString() en el objeto, y la utiliza.
  • Si no se aplica lo anterior, se utiliza JSON.stringify .

Durante el tiempo de ejecución, el compilador usa el servicio $interpolate para ver si los nodos de texto y los atributos de los elementos contienen marcas de interpolación con expresiones incrustadas.

Además, el compilador angular utiliza un interpolateDirective y registra a los observadores para escuchar los cambios del modelo. Ese es el proceso del ciclo digestivo.

Lea más here para comprender cómo funciona la interpolación.

¿Por qué {{'''' == +Infinity}} devuelve verdadero?

En AngularJS, el servicio $interpolate evalúa +Infinity valor +Infinity a 0 .

angular.module(''app'', []) .controller(''Controller'', [''$injector'', function($injector) { }]); setTimeout(function() { angular.bootstrap(document.getElementById(''body''), [''app'']); });

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> <div id="body"> <div ng-controller="Controller"> {{+Infinity}} </div> </div>

Ahora la expresión permanece {{0==''''}} .

¿Por qué 0=='''' se evalúa como true ?

El lado izquierdo es de tipo Number . El lado derecho es de tipo String .

En este caso, el operando derecho se obliga al tipo Número:

0 == Number('''') => 0 == 0,

que se evalúa a valor booleano true .

Aquí se aplica el algoritmo de comparación de igualdad abstracta .

Si el Tipo (x) es Número y el Tipo (y) es Cadena, devuelva el resultado de la comparación x == ToNumber (y).

Estoy trabajando en un proyecto AngularJS. Noté que la siguiente expresión devuelve un número.

En la vista, {{undefined + 10}} generará 10.

En JavaScript, undefined + 10 emitirá NaN .

¿Por qué este comportamiento es diferente en una vista?


Para explicar haciendo referencia al código de AngularJS, esta es la magia:

function plusFn(l, r) { if (typeof l === ''undefined'') return r; if (typeof r === ''undefined'') return l; return l + r; }

Si tiene una expresión "más", esta función se analiza en su plantilla.

El reemplazo de la expresión es invocado por Parser.parse (angular.js: 16155) o parse.js: 1646 ( https://github.com/angular/angular.js/blob/87a586eb9a23cfd0d0bb681cc778b4b8e5c8451d/src/ng/parse.js#L1646 cppp / cpp / cpcp / cp7pc) https://github.com/angular/angular.js/blob/87a586eb9a23cfd0d0bb681cc778b4b8e5c8451d/src/ng/parse.js#L1646 ).