如何在函数中全局化一个js var?

时间:2017-06-03 17:02:45

标签: javascript html

可以在函数内部全局变量,如果没有,我如何从函数a中访问函数b中的var。

var money;
var moneyInput = document.getElementById('input');

function check(){
if (moneyInput.value == "") {
    money = 100;
}                   

function hit() {
    document.write(money) // will this money var be 100 or undefined?
}

7 个答案:

答案 0 :(得分:2)

只需在函数外部声明该变量,然后在该函数内部使用它。

请注意,发布一些您已经尝试过的代码。



let a = 5;
let b = 0; // Declare global variable

function printAB(_b) {
  b = _b; // Set new value through this function
  console.log(a, b);
}

function printBC() {
  let c = 7;
  console.log(b, c); // Get b variable
}

printBC(); // 0, 7 // b = 0
printAB(2); // 5, 2
printBC(); // 2, 7 // b = 2




修改

使用您提供的代码,答案很简单。变量money可以等于100undefined,这取决于函数hit之前是否会调用函数check

答案 1 :(得分:1)

如果为函数中的未声明变量赋值,则会将其创建为全局变量。

答案 2 :(得分:1)

您应该在函数范围之外声明变量:

var myGlobalVar = "foo";

function a(){
   var myLocalVar = 'bar';
   alert(myGlobalVar); //shows foo
   alert(myLocalVar); //shows bar
}

function b(){
   var myLocalVar = 'baz';
   alert(myGlobalVar); //shows foo too
   alert(myLocalVar); //shows baz
}

答案 3 :(得分:1)

在不使用varletconst

的情况下分配变量
var foo = 'bar';

function fn() {
  console.log(foo);
  bar = 'xyz';
}

fn()

console.log(bar)

Repl:https://repl.it/languages/javascript

答案 4 :(得分:1)

您可以为全局对象(浏览器中的窗口)指定值:



function a(){
  window.test="test";
}
function b(){
 console.log(test);
}
a(),b();




答案 5 :(得分:1)

在外部范围内声明变量并在其中使用它应该可以解决您的问题。但是,如果您坚持在全局范围内创建变量,则可以执行以下操作;

options: {
  scales: {
        yAxes: [{
            ticks: {
                beginAtZero: true
            }
        }]
    }
}

通过这样做,您实际上正在创建一个全局变量window.VAR_NAME = 'foo'; ,它现在具有值foo。

答案 6 :(得分:1)

/ * 1 * /

var a = 'sample text';

function one() {
  a = 'modified text';
}

function two() {
  console.log(a);
}

one();
two();

/ * 2 * /

function one(callback) {
  var a = 'sample text callback';
  callback(a);
}

function two() {
  one(function(a) {
    console.log(a);
  });
}

two();

/ * 3 * /

var one = new Promise(function(resolve, reject) {
  var a = 'sample text promise';
  resolve(a);
});

function two() {
  one.then(function(a) {
    console.log(a);
  });
}

two();

/ * 4 * /

var myGlobals = {};

function one() {
  myGlobals.a = 'sample text';
}

function two() {
  console.log(myGlobals.a);
}

one();
two();