function isScopeElement(elem) {
    return elem.type === 'Program' ||
        elem.type === 'BlockStatement' && (
            elem.parentElement.type === 'FunctionExpression' ||
            elem.parentElement.type === 'FunctionDeclaration' ||
            elem.parentElement.type === 'ArrowFunctionExpression'
        );
}
Requires `var` declaration to be on the top of an enclosing scope

Types: `Boolean`

Values:

- `true` specifies that `var` declarations must occur the top of a function scope.

#### Example

```js
"requireVarDeclFirst": true
```

##### Valid for mode `true`

```js
var x = 1,
    y = 2;
```
```js
'use strict;'
var x = 1,
    y = 2;
```
```js
var x = 1;
var y = 2;
```
```js
var x = 1;
// comments
var y = 2;
```
```js
var x = 1;
// comments
// comments 2
var y = 2;
```
```js
const a = 1;
const b = 2;
```
```js
var x = 1;
function y() {var z;};
```
```js
var x = 1;
var y = function () {var z;};
```
```js
var w = 1;
function x() {
 var y;
// comments
// comments 2
 var z;
};
```
```js
var w = 1;
function x() {
 "use strict";
 var y;
};
```
```js
var x = 1;
var y;
for (y = 0; y < 10; y++) {};
```

##### Invalid

```js
var x;
x = 1;
var y = 2;
```
```js
var w = 1;
function x() {var y;};
var z = 2;
```
```js
var w = 1;
function x() {
 var y;
 y = 2;
 var z;
};
```
```js
var a;
for(var count=0;count < 10;count++){}
```
```js
var x;
for(var count=0;count < 10;count++){
 var y;
}
```