Javascript 表达式中使用的未声明、未初始化的变量:怎么想?

Javascript 表达式中使用的未声明、未初始化的变量:怎么想?,javascript,variables,scope,initialization,variable-declaration,Javascript,Variables,Scope,Initialization,Variable Declaration,我正在努力理解以下代码片段(位于名为program.js的文件中)。 我的问题是,我找不到此文件中声明和/或初始化CODERBOT\u PROG\u SAVEONRUN的位置。 似乎没有导入任何外部代码或库 我在其他很多地方也遇到了同样的问题。 这是JavaScript的一个古怪特性,还是我应该去别的地方看看 如果在给定的JavaScript文件中使用了一个变量,但没有初始化和声明,我应该怎么想 如果没有明显的“导入”语句,它从何而来 function runProg() { var b

我正在努力理解以下代码片段(位于名为
program.js
的文件中)。 我的问题是,我找不到此文件中声明和/或初始化
CODERBOT\u PROG\u SAVEONRUN
的位置。 似乎没有导入任何外部代码或库

我在其他很多地方也遇到了同样的问题。 这是JavaScript的一个古怪特性,还是我应该去别的地方看看

如果在给定的JavaScript文件中使用了一个变量,但没有初始化和声明,我应该怎么想

如果没有明显的“导入”语句,它从何而来

function runProg() {
    var bot = new CoderBot();
    // Generate JavaScript code and run it.
    window.LoopTrap = 1000;  
    Blockly.Python.INFINITE_LOOP_TRAP = '  get_prog_eng().check_end()\n';
    var code = Blockly.Python.workspaceToCode();

    if(CODERBOT_PROG_SAVEONRUN) {
        Blockly.Python.INFINITE_LOOP_TRAP = null;
        var xml_code = Blockly.Xml.workspaceToDom(Blockly.mainWorkspace);
        var dom_code = Blockly.Xml.domToText(xml_code);
        var data =  {'name': prog.name, 'dom_code': dom_code, 'code': code};
        try {
            $.ajax({url: '/program/save', data: data, type: "POST", success:function(){
                loadProgList();
            }});
        }catch (e) {
            alert(e);
        }
    }
    try {
        var data =  {'name': prog.name, 'code': code};
        $.ajax({url: '/program/exec', data: data, type: "POST"});
        $("#dialogRunning").popup("open", {transition: "pop"});
        setTimeout(statusProg, 1000);
    } catch (e) {
        alert(e);
    }
}

在JavaScript中,存在由函数定义的全局上下文和局部上下文。如果函数中未定义变量,则该变量在全局上下文中定义。在浏览器中,全局上下文为
窗口
;在该窗口中运行的所有脚本共享相同的全局上下文


您要查找的变量是在
templates/config_params.html
中定义的。它和
program.js
脚本都包含在
templates/main.html
中,这使得在显示该页面时,每个变量的全局变量对另一个可见。

它看起来像是在该文件中初始化的:


我假设模板包含在页面顶部,初始化所有常量,如
CODERBOT\u PROG\u SAVEONRUN
。这是一种将变量从服务器公开给客户端的方法。

我必须等待4分钟才能接受这个答案。你怎么这么快就解决了?XD我一直在挠头第二段,使用GitHub的搜索功能。:)