未使用 var 声明的 JavaScript 变量会成为全局变量吗?

Sam*_*tar 5 javascript jquery typescript

我在一个文件中有以下代码:

function refreshGridSuccess(responseText, entity) {

    oTable = $('#dataTable').dataTable({
        "sScrollX": "100%",
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,我有:

$('#detailData')
        .on('click', '.sort-up', function (event) {
            event.preventDefault();
            var column = $(this).closest('th'),
                columnIndex = column.parent().children().index(column.get(0));
            oTable.fnSort([[columnIndex, 'asc']]);
            return false;
        })
Run Code Online (Sandbox Code Playgroud)

oTable除了这里,我没有定义。脚本似乎可以工作,这是否意味着它oTable以某种方式变成了全局变量?

现在我正在尝试开始使用 Typescript,如果没有Otable声明它就不会接受。有没有办法可以声明oTable为对象,或者我是否必须将其声明为与返回的类型相同的对象$('#dataTable').dataTable({})

Yat*_*rix 3

如果您在全球范围内,那么就没有区别。如果你在一个函数中,那么“var”将创建一个局部变量,“no var”将查找作用域链,直到找到该变量或到达全局作用域(此时它将创建它)。

在这里找到:var 关键字的目的是什么以及何时使用它(或省略它)?