使javascript变量在不同的函数中可见

make javascript variable visible in different functions

本文关键字:函数 javascript 变量      更新时间:2023-09-26

我需要在某个地方声明变量a,并使用javascript技术使f2函数在f1函数内部调用时可见。但是直接调用(在f1函数之外)f2函数必须不能打印a。我不能用eval。我不能改变f2函数。我可以随意改变f1函数。这可能吗?

function f1(var_name){
    f2();
}
function f2(){
    console.log(a);
}
f1();  // must log value of the a
f2();  // must not be able to log a

小小的变通。声明一个全局变量并设置为undefined。在f1内部调用f2函数之前设置a的值。在f2 call

后设置a为undefined
var a = undefined;
function f1(var_name){
  a = 'this is a ';
  f2();
  a = undefined;
}
function f2(){
  console.log(a);
}

为什么不使用另一个全局变量?您定义了一个全局变量a,并在函数f1中声明了一个新的全局变量b = a,调用将打印b全局变量的f2函数,将全局变量b再次设置为NULL。

这样,b将只在f1函数期间定义,并且将具有全局a变量的值。

此方法仅在f2()已经使用" This "时才有效:(在这种情况下,将不会更改以添加"this"支持)。

function f1(var_name){
    var scope = {a: var_name};
    f2.call(scope);
}
function f2(){
    console.log(this.a);
}
f1(123);  // must log value of the a
f2();  // must not be able to log a

你也可以考虑函数重载