SVRV

Both function and value

Perhaps my favourite discovery in JavaScript was that  functions may have another value when it is evaluated without calling.  Manipulating .valueOf or .toString makes for fun but somewhat unreadable  code.

function A(){return 3}
A.valueOf = function(){return 2}
console.log(A,A(),A()*A)

This, together with bind, was heavily used in my Rami language. Thanks to this duality of function and value, I could easily create a JS evaluator which kept the syntax. mult(add(2)(4)(6))(4). A kind of polish notation JavaScript.