```js
function f(a) { 
  if ( Array.isArray(a) ) { 
    a = [a]; 
  } 

  var t = typeof a, l = a.length; 

  return [ t, l ];
}
```
The runtime semantics are as such:

```js
function f(a) { // a bound here.
  var t = typeof a, l = a.length; // now t and l   
  if ( Array.isArray(a) ) { // now checking a
    a = [a]; // now reassigning a
  } 
  return [ t, l ]; //...done
}

f("the length is 16");
// [ "string", 16 ]
```