tipos sirven raphson raices que para numericos newton metodos metodo los ejemplos ecuaciones biseccion aplicaciones javascript

javascript - sirven - raices de ecuaciones metodos numericos



¿Por qué los literales de números no tienen acceso a los métodos numéricos? (3)

Esta pregunta ya tiene una respuesta aquí:

Si observas la especificación ECMAScript 3, verás que los tipos de valores primitivos Null y Undefined no tienen objetos Null y Undefined acompañantes.

>> Null ReferenceError: Null is not defined

Los otros tipos de valores primitivos, Number, String y Boolean tienen los objetos Number, String y Boolean acompañantes, a los que puede hacer referencia desde el alcance global.

>>Number function Number() { [native code] } >>Boolean function Boolean() { [native code] }

El propósito de estos tipos de valores primitivos es proporcionar métodos como toString y valueOf para sus respectivos tipos de valores primitivos:

>>var n = 1; >>n.toString(); "1"

es lo mismo que

>>var n = 1; >>Number.prototype.toString.call(n); "1"

Booleanos y cadenas también funcionan de esta manera:

>>var b = true; >>b.toString(); "true" >>Boolean.prototype.toString.call(b); "true"

Puede ver que los objetos de valores primitivos usan los métodos de su objeto acompañante cuando intenta mezclar tipos:

>>Boolean.prototype.toString.call(n); TypeError: Boolean.prototype.toString is not generic >>Number.prototype.toString.call(b) TypeError: Number.prototype.toString is not generic

Curiosamente para tipos booleanos y literales de cadenas, puede llamar a estos métodos directamente desde el literal:

>>true.toString(); "true" >>Boolean.prototype.toString.call(true) "true" >>"moo".toString(); "moo" >>String.prototype.toString.call("moo") "moo"

Los valores primitivos nulos e indefinidos, ya que no tienen los objetos Nulo y No definido acompañantes, no pueden hacer lo siguiente:

>>Null ReferenceError: Null is not defined >>null.toString() TypeError: Cannot call method ''toString'' of null

El número de tipo de valor primitivo se comporta como una mezcla de los dos. Puede llamar a toString en un literal si usa directamente el método del objeto prototipo del Número:

>>Number.prototype.toString.call(1); "1"

Pero no puedes acceder al método desde el literal en sí, como lo haces con cadenas y booleanos:

>>1.toString() SyntaxError: Unexpected token ILLEGAL

¿Por qué los números literales se comportan de forma diferente de boolean y string a pesar de que hay un objeto Number?


Creo que encontrará una respuesta a su pregunta en esta respuesta a otra pregunta de Desbordamiento de pila. Para resumir la respuesta de Theo :

[E] l analizador espera que un número seguido de un punto sea un literal de coma flotante. [...] [S] solo tienes que agregar otro punto para que funcione [.]


Null (capital N) es un nombre de variable. Las palabras reservadas distinguen mayúsculas de minúsculas. null es el objeto nulo. typeof null === "object" // true


Puede acceder a él de la misma manera, aquí se trata de un problema de análisis diferente, para hacerlo, use una sintaxis ligeramente diferente:

(1).toString()

Los números pueden tener decimales, por lo que la sintaxis para terminar en un decimal es un poco ambigua cuando vas a analizar el código, usa paréntesis para que sea válido. Es un poco más claro cuando ves que esto también es válido:

(1.).toString()

Sin embargo, con solo 1.toString() está intentando analizar como un número con un decimal , y falla.