Quantcast
Channel: Code Painters » webapps
Viewing all articles
Browse latest Browse all 5

The weirdest programming language feature ever

$
0
0

I have to admit I had a long break from web applications development, and the topic changed a lot over the last few years. As I'm developing a web app now, I decided to improve my JavaScript knowledge, just to learn about an exceptionally awkward language feature.

In JavaScript, each statement can be terminated with a semicolon. If it is not, the semicolon is inserted automatically by the language implementation (the exact rules are irrelevant here, you can easily find it). Sounds innocent at first, but it is actually quite dangerous. Let's say we want to return an array from a function:

function a()
{
    return [ 'a' ]
}
print (a());

The result matches our expectations:

czajnik@lapcio:~$ rhino a.js
a

Now let's insert a new line after the return statement:

function b() 
{
    return
    [ 'b' ]
}
print (b());

This snippet produces the following output:

czajnik@lapcio:~$ rhino b.js
undefined

That's because a semicolon was inserted automatically after return, and the array alone on the next line is acceptable syntax (in JavaScript an expression alone is a valid statement). This is weird, pathetic and scary...


Viewing all articles
Browse latest Browse all 5

Trending Articles