The short answer is that ClojureScript is compiled to JavaScript before being evaluated, and JavaScript is very permissive when it comes to the number of arguments provided to functions.
To show you there's no black magic going on here it helps to look at the JavaScript the compiler produces for your program. (One easy way to do that is to paste it into
app.klipse.tech.) Here's what I get for your program:
You can validate this for yourself in your browser's JavaScript console:
(function(x) { return x + 1; })(0,7)
⇒ 1
(function(x) { return x + 1; }).call(null, 0, 7)
⇒ 1
(function(x) { return x + 1; }).apply(null, [0, 7])
⇒ 1
JavaScript functions are also permissive in the other direction; missing arguments will be replaced with undefined:
(function(x) { return console.log(x); })()
undefined
⇒ undefined
(function(x) { return console.log(x); }).call(null)
undefined
⇒ undefined
(function(x) { return console.log(x); }).apply(null, [])
undefined
⇒ undefined
Hope that helps!