una teoria recorrer pasar parametros objetos objeto metodos funciones funcion ejemplos desde crear array agregar javascript expression terminology semantics

teoria - pasar parametros a una funcion javascript desde html



Javascript: diferencia entre una declaración y una expresión? (8)

Hice this pregunta antes, y después de pensar un poco más en el tema, comencé a preguntarme dónde se encuentra el límite aparentemente borroso entre los significados de los términos "enunciado" y "expresión". ¿Son todas las declaraciones también expresiones? ¿De dónde vienen los valores de retorno en una consola REPL? No siempre parecen tener un sentido intuitivo. Por supuesto, si escribe 1+1 , obtendrá 2 , pero otras veces no es tan obvio como es la lógica.

Dado que cualquier cosa escrita en REPL produce algún valor, ¿significa que puede usarse en el código fuente de JS como una expresión y una declaración independiente?

¿Se puede usar la cadena de código que podría usarse para _X_ en el siguiente fragmento de _Y_ para _Y_ y viceversa? if(_X_) _Y_


¿Son todas las declaraciones también expresiones?

“Siempre que JavaScript espere una declaración, también puede escribir una expresión. Dicha declaración se llama una declaración de expresión. Lo contrario no es válido: no puede escribir una declaración en la que JavaScript espere una expresión. Por ejemplo, una sentencia if no puede convertirse en el argumento de una función ".

Esto proviene de una publicación reciente de Axel Rauschmayer sobre este tema: Expresiones versus declaraciones en JavaScript

Espero eso ayude.


En sus términos más simples, las expresiones se evalúan para producir un valor . Por otro lado, las declaraciones se ejecutan para hacer que algo suceda .


La expresión produce o evalúa algún valor.

Ejemplos de expresiones: new Date() produce un nuevo objeto Date sin ningún efecto secundario. [1,2,3] produce una nueva matriz sin ningún efecto secundario. 5+6 produce un nuevo valor 11. Solo produce un nuevo valor sin ningún efecto secundario.

La declaración produce algún comportamiento o hace algo y también tiene algún efecto secundario. Basado en el efecto secundario, las declaraciones pueden ser categorizadas.

x=5; es una declaración y aquí el efecto secundario es la asignación o cambio en x.

setTimeout() : el inicio del temporizador es el efecto secundario.

Las declaraciones son generalmente separadas por punto y coma.

Declaración de expresión es la expresión que tiene algún efecto secundario o simplemente "expresión con efecto secundario".

Ejemplos de declaración de expresión:

x+=6; es la expresión compleja (grupo de expresiones primarias) que está realizando una asignación que es un efecto secundario, también llamado declaración de expresión.

delete a[2];


Recomiendo leer la publicación completa del blog del Dr. Axel Rauschmayer
Expresiones versus declaraciones en JavaScript
como se menciona en la respuesta aceptada de @ZER0 arriba.

Pero mi atajo de memoria favorito es:

Expresión:
e se puede establecer E qual para una Expression
..o Expressed imprimiéndolo.
Declaración:
..Algo más.

Se modifica lo siguiente de
La respuesta de Anders Kaseorg a Quora .

Una declaración es una línea completa de código que realiza alguna acción.

E xrepresión muy E puede utilizarse como una declaración
(cuyo efecto es evaluar la expresión e ignorar el valor resultante) .

Pero una expresión de E es cualquier sección del código que se valora a un valor.

Las expresiones se pueden combinar "horizontalmente" en expresiones más grandes utilizando operadores.
E tiene una parte superior plana horizontalmente

La mayoría de las declaraciones no se pueden utilizar como expresiones.

Las declaraciones solo se pueden combinar "verticalmente" escribiendo una después de otra, o con construcciones de bloque.
S corre verticalmente en comparación.

De Quora Post por Ryan Lam:

Aquí hay una regla general: si puede imprimirlo o asignarlo a una variable, es una expresión. Si no puedes, es una declaración.

Aquí hay algunos ejemplos de expresiones:

2 + 2 3 * 7 1 + 2 + 3 * (8 ** 9) - sqrt(4.0) min(2, 22) max(3, 94) round(81.5) "foo" "bar" "foo" + "bar" None True False 2 3 4.0

Todo lo anterior se puede imprimir o asignar a una variable.

Aquí hay algunos ejemplos de declaraciones:

if CONDITION: elif CONDITION: else: for VARIABLE in SEQUENCE: while CONDITION: try: except EXCEPTION as e: class MYCLASS: def MYFUNCTION(): return SOMETHING raise SOMETHING with SOMETHING:

Ninguna de las construcciones anteriores se puede asignar a una variable. Son elementos sintácticos que sirven a un propósito, pero no tienen ningún "valor" intrínseco. En otras palabras, estas construcciones no se "evalúan" a nada. Tratar de hacer algo de lo siguiente, por ejemplo, sería absurdo y simplemente no funcionaría:

x = if CONDITION: y = while CONDITION: z = return 42 foo = for i in range(10):


Según MDN :

Una expresión es cualquier unidad de código válida que se resuelve en un valor.

Como tal, cualquier cosa que pueda usarse como un valor es una expresión.

El criterio no es si existen efectos secundarios. Las expresiones definitivamente pueden tener efectos secundarios. Por ejemplo, a=2 es una expresión ya que tiene un valor (2) y también asigna un valor a una variable. Por eso puedes hacer cosas como:

let a; let b = 1 + (a = 2); // a is now 2 and b is 3

Es posible que el mismo bloque de texto (textualmente) se considere una expresión y una declaración según el contexto. Por ejemplo, la function f(){} fragmento de texto function f(){} es una expresión en la línea 1 y una declaración en la línea 2 en el siguiente código:

let g = function f() {}; function f() {};

Entonces, si algo es una expresión o una declaración no puede (en el caso general) ser pronunciado mirando una pieza de código textual fuera de contexto; más bien, es una propiedad de un nodo en un árbol de sintaxis y se puede pronunciar solo después de que el código se analiza (mentalmente o en realidad).

Además, y quizás más importante, las declaraciones de función (también conocidas como declaraciones de función) dentro de una función f forman parte del contexto de ejecución que se crea cuando se invoca la función f . Sin embargo, las expresiones de función no forman parte del contexto de ejecución.

Un efecto citado a menudo de esto es que las declaraciones de funciones se "suben" mientras que las expresiones de funciones no.

También se puede observar experimentalmente un efecto más sutil en recursiones profundas dado que las declaraciones de función ocupan espacio en el contexto de ejecución, mientras que las expresiones de función no lo hacen. Por ejemplo, el código siguiente utiliza la recursión infinita de una función f . La función f en el primer caso incluye una expresión de función dentro de ella, en el segundo caso incluye la declaración de función equivalente:

// Function Expression { let i = 0; try { function f () { i++; (function g() {})(); // this is an expression f(); } f(); } catch (err) { console.log(`Function Expressions case: depth of ${i} reached. Error: ${err.name}`); } } // Function Declaration { let i = 0; try { function f () { i++; function g() {}; // this is a statement g(); f(); } f(); } catch (err) { console.log(`Functions Declarations case: depth of ${i} reached. Error: ${err.name}`); } }

En mi máquina siempre obtengo lo siguiente (en node.js):

Function Expressions case: depth of 17687 reached. Error: RangeError Functions Declarations case: depth of 15476 reached. Error: RangeError

... lo cual es consistente con el hecho de que las Declaraciones de función aumentan la cantidad de espacio necesario para mantener un contexto de ejecución y, por lo tanto, consumen el espacio de la pila un poco más rápido y, por lo tanto, disminuyen ligeramente la profundidad de recursión máxima.


Tenemos los siguientes dos tipos de expresiones:

1. La expresión booleana se utiliza para ejecutar el bloque de instrucciones .

2. La expresión aritmética se usa para asignaciones de variables, que también actúa como una declaración .

Por ejemplo: number = number + 1;


Todos los programas en JavaScript están formados por sentencias y terminan con punto y coma, excepto las sentencias de bloque que se utilizan para agrupar cero o más sentencias. Las declaraciones son solo algunas acciones, pero no producen ningún valor o resultado, mientras que las expresiones devuelven algún valor. Cuando el intérprete ve una expresión, recupera su valor y reemplaza la expresión con un nuevo valor. Las declaraciones se utilizan para manipular esas expresiones. Puede verificar si es una expresión o una declaración aquí: JavaScript Parser


Expresión : una unidad de código que se resuelve en un valor, como instancia, literales y operadores . Ejemplos de expresiones:

> 3 > 1 + 2 > "expression" > fn() > [] > {}


Declaración : una unidad de código que representa una instrucción o más, generalmente comienza con una palabra clave reservada en el idioma y termina, explícita o implícitamente , con un terminador de instrucción. Ejemplos de declaraciones:

> 3; > let x = 3; > if () {} > for () {} > while () {}