Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript inner function with colon

I know that you can write following

var obj = {
    test: 'something'
}

But in this code, the inner function does not refer to a variable, but to a function.

Is there any other way to write / call the inner function?

function outer(){
    
    var a = "Outerfunction";
    console.log(a)
            
    innerFct: function InnerFct()    {                                              
        var c = "Inner";
        console.log(c)
    } innerFct();
}
window.outer();
like image 565
xhallix Avatar asked May 09 '26 22:05

xhallix


2 Answers

There are a couple of different things going on here.

In this code:

var obj = {
    test: 'something'
}

you are using "literal object notation" to create -- well, an object with one property test and that property has a value of something

In your second case, you are creating a code block (yes, it is fun that both objects and code blocks use the same syntax {...} to define them.

Inside of a code block, the innerFct: becomes a label. Labels are used with some control flow statements to jump around. Forget about them, you really are better off not using them.

function outer(){
    var a = "Outerfunction";
    console.log(a)

    function innerFct()    {                                              
        var c = "Inner";
        console.log(c)
    }
    innerFct();
}
outer();

or even

function outer(){
    var a = "Outerfunction";
    console.log(a)

    var innerFct = function ()    {                                              
        var c = "Inner";
        console.log(c)
    }
    innerFct();
}
outer();
like image 187
Jeremy J Starcher Avatar answered May 11 '26 12:05

Jeremy J Starcher


You are confusing functions with objects.

When using an object, the colon is used to show key-value pairs.

var object = {
  innerFct: function(){
    console.log('rawr');
  },
  someVariable: 7
}

object.innerFct(); //logs rawr
object.someVariable = 4; //just changed from 7 to 4

Using a colon how you have it in your example is incorrect syntax. Also when you are creating a function within an object like that, you don't name the function again because you are already assigning it to a name on the object.

Then you can edit the function anytime by doing something like this:

object.innerFct = function(){
  //new code
}

Doing object.innerFct() will call the function.

like image 27
Aust Avatar answered May 11 '26 11:05

Aust



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!