如何使局部变量成为全局变量 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
我有这样的 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();