可以在函数内部全局变量,如果没有,我如何从函数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?
}
答案 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
可以等于100
或undefined
,这取决于函数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)
在不使用var
,let
或const
var foo = 'bar';
function fn() {
console.log(foo);
bar = 'xyz';
}
fn()
console.log(bar)
答案 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();