DEV Community

Meghan (she/her)
Meghan (she/her)

Posted on

9 1

Have blocks return the last statement with the Comma Operator

Some languages allow for a syntax that allows for the last statement to be automatically be returned by the block.

{ 
  System.print("one")
  System.print("two")
  System.print("three")
  2 + 4
}
Enter fullscreen mode Exit fullscreen mode

We can achieve this in JavaScript with the comma operator.

const doSomethings = () => (
    console.log(location.href),
    global.variable += 4,
    12 / 2
);
Enter fullscreen mode Exit fullscreen mode

And just like that, the two code blocks from above would return the same thing!

Top comments (6)

Collapse
 
shahriarsiraj profile image
Shahriar Siraj Snigdho

I don't know about others, but I think that returning with this method is less readable

Collapse
 
moopet profile image
Ben Sinclair

I agree. It's interesting that you can do it, but I prefer to be a little more explicit.

Collapse
 
shahriarsiraj profile image
Shahriar Siraj Snigdho

Since I came from c# background, so returning with comma operator hurts my eyes. No offense, btw!

Collapse
 
joelnet profile image
JavaScript Joel

I use the comma operator often in functional projects for this exact reason and I find it more intuitive than having a return statement.

One reason is that it mimics the pipe operator that I am frequently using, so the code blocks look similar.

Also every function flows through from top to bottom and always returning the last value, so in this codebase it becomes very intuitive.

Collapse
 
nektro profile image
Meghan (she/her)

Nice! Speaking of the pipe operator, have you seen github.com/tc39/proposal-pipeline-...

Collapse
 
joelnet profile image
JavaScript Joel

Yes and I am very excited for it. Also excited for the partial application proposal. I think the pipeline proposal would replace compose and pipe and the partial application proposal would replace the need for most currying.

Very excited!

Cloudinary image

Optimize, customize, deliver, manage and analyze your images.

Remove background in all your web images at the same time, use outpainting to expand images with matching content, remove objects via open-set object detection and fill, recolor, crop, resize... Discover these and hundreds more ways to manage your web images and videos on a scale.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay