function VariableDeclaration( node, state, clbk ) {
	var len;
	var v;
	var i;
	if ( node.kind === 'var' || state.ancestors[ state.ancestors.length-2 ] === state.body ) {
		len = node.declarations.length;
		if ( len === 1 ) {
			state.replace( node.start, node.start+node.kind.length, 'void' );
		} else {
			state.replace( node.start, node.start+node.kind.length, 'void (' );
		}
		for ( i = 0; i < len; i++ ) {
			v = node.declarations[ i ];
			state.prepend( v, '(global.' );
			state.append( v, ( v.init ) ? ')' : '=void 0)' );
		}
		if ( len !== 1 ) {
			state.append( node.declarations[ len-1 ], ')' );
		}
	}
	walk.base.VariableDeclaration( node, state, clbk ); // eslint-disable-line new-cap
}
Callback invoked upon encountering a `VariableDeclaration` AST node.

## Notes

-   **WARNING**: top-level `const` declarations are converted to `var` declarations. Unfortunately, as the declarations occur within an `async` function scope, we cannot simultaneously declare the constant in the global scope and bind the resolved value, as the former happens synchronously and the latter asynchronously.

@private
@param {Node} node - AST node
@param {Object} state - state
@param {Function} clbk - callback