Saltar al contenido

javascript- Error de sintaxis no detectado: el identificador * ya se ha declarado

Por fin después de mucho trabajar hemos encontrado la respuesta de este apuro que algunos de nuestros lectores de nuestra web presentan. Si deseas aportar algún detalle no dejes de dejar tu información.

Solución:

Esto es sorprendente como javascript var no respeta el alcance del bloque sino el alcance funcional …

Claro, pero no usaste var para la declaración de a en el ámbito del bloque. Ha utilizado una declaración de función, que lo hace respetar los alcances de los bloques (de lo contrario, sería un código completamente inválido, como en el modo estricto de ES5).

Está permitido en javascript declarar la misma variable dos veces en el mismo ámbito con var como a continuación

Lo mismo se aplica aquí. El function declaración en el bloque utiliza la semántica de declaración ES6 (como let o const), que no permite redeclaraciones.

Caso 1

console.log(a) //output:ƒ a()
var a = 1;
function a();
var a = 10;
console.log(a) //output:10

se representará como

var a;
a = function(); // now a holds the value as a function
console.log(a); // output : f a()
a = 1; // a is a var that holds value 1
a = 10; // a is a var that holds value 10
console.log(a); // output : 10

Caso 2

var a = 1;
if(true)
   function a();
   var a = 10;

console.log(a)

se representará como

var a;
a = 1;
if(true) 
    a = function() ;
    let a; // The function declaration in the block uses ES6 declaration semantics (like let or const), which does not allow re-declarations.
    var a; // throws Uncaught SyntaxError: Identifier 'a' has already been declared
    a = 10;

console.log(a);

Caso 3

var a = 1;
if(true)
    function a();
    a = 10;
 
console.log(a)

se representará como

var a;
a = 1;
if(true) 
    a = function() ;
    let a;
    a = 10;

console.log(a); // output : f a()

Caso 4

var a = 1;
if(true)
    var a= function()console.log()
    a = 10;

console.log(a)

se representará como

var a;
a = 1;
if(true) 
    a = function()console.log()
    a = 10;

console.log(a) // output:10

Caso 5

var a = 1;
if(true)
    function a();
    a = 10;
    console.log(a) 

console.log(a) 

se representará como

var a;
a = 1;
if(true)
    a = function() ;
    let a;
    a = 10;
    console.log(a); // output:10

console.log(a); // output : f a()

Recuerda algo, que te brindamos la opción de interpretar .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *