如何使局部变量成为全局变量 javascript

How to make local varible global javascript

我有这样的 class : https://jsfiddle.net/0sh7fLtp/

当我创建这个 class 的新对象时,即使我在 class:

中分配给 window 也看不到我的局部变量
function Hilitor() {
    var excat;

    this.setMatchType = function(type) {
        if (type == "exact"){ 
            window.excat = true;
        } 
    };

    this.setRegex = function(input) {
        alert(excat);
    };

    this.apply = function(input) {
        this.setRegex();
    };
}

我就是这样称呼它的:

var myHilitor = new Hilitor();
myHilitor.apply();
myHilitor.setMatchType("exact");

不确定我是否完全理解您的问题,但您正在尝试将变量 "excat" 与字符串 "excat" 进行比较...请参阅此 fiddle 以了解如何使您的 var 成为字符串,然后得到所需的输出..

https://jsfiddle.net/shemdani/0sh7fLtp/5/

var myHilitor = new Hilitor();
myHilitor.setMatchType("excat");
myHilitor.apply();



function Hilitor()
{
  var excat;

  this.setMatchType = function(type)
  {
     if(type == "excat"){window.excat = true;} 

  };

  this.setRegex = function(input)
  {

   alert(window.excat);

  };

  this.apply = function(input)
  {

      this.setRegex();

  };

}

两个主要问题

1) 函数内的 var exact 不是全局变量,因此无法在 window 对象上访问。 (但这是一件好事)。

如果您仅针对 exact

删除 window.exact,您的代码将有效
this.setMatchType = function(type)
  {
     if(type == "exact"){excat = true;} 

  };

2) 在调用 setMatchType 之前,您还调用了 apply。像这样切换它们有效:

var myHilitor = new Hilitor();
myHilitor.setMatchType("excat");
myHilitor.apply();

Working example