Is it good practice?
No. In fact it is disallowed in the new ECMAScript Fifth Edition ‘strict mode’:
When a delete operator occurs within strict mode code, a SyntaxError is thrown if its UnaryExpression is a direct reference to a variable, function argument, or function name (11.4.1).
If you really must, you can instead =null the variable to free up any object it referenced for garbage collection, but it's almost never going to result in any appreciable improvement in performance.
Deleting properties of long-lived objects to free now-unused referenced objects can be a good idea, especially in the case of breaking DOM cycles to prevent memory leakage in IE. Deleting local variables inside a short-lived function isn't sensible.
deletelocal variables; strict-mode ES5 will even throw aSyntaxError