Why does this JavaScript work?

前端 未结 4 1366
难免孤独
难免孤独 2021-01-17 08:27

I was looking at the output of some stuff from UglifyJS and happened across some code like the following:

var a = 0;
var b = function () {
    return functio         


        
4条回答
  •  攒了一身酷
    2021-01-17 09:07

    First of all let me cite MDN on the comma operator:

    The comma operator evaluates both of its operands (from left to right) and returns the value of the second operand.

    With that being said, it is clear, how your code evaluates:

    Inside the immediately executed function you return 2 values separated by a comma:

    function () { a++; }()
    

    and

    'Hello World'
    

    So both operands are evaluated. This increments your variable a and leads to the following expression for the return value of the function to create b:

    undefined, 'Hello World'
    

    Finally the right operand is returned as a value for the outer function, thus giving b the value 'Hello World'.

提交回复
热议问题