javascript- Uncaught SyntaxError: Identifier * has already been declared

前端 未结 3 1556
盖世英雄少女心
盖世英雄少女心 2020-12-24 07:52
console.log(a) //output:ƒ a(){}
var a = 1;
function a(){};
var a = 10;
console.log(a) //output:10

====================

var a = 1;
i         


        
3条回答
  •  死守一世寂寞
    2020-12-24 08:24

    Case 1

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

    Will be rendered as

    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
    

    Case 2

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

    Will be rendered as

    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);
    

    Case 3

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

    Will be rendered as

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

    Case 4

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

    Will be rendered as

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

    Case 5

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

    Will be rendered as

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

提交回复
热议问题