JavaScript更改全局变量

时间:2019-04-06 16:23:01

标签: javascript

我有2个JS文件,我需要将2个变量从一个传递到另一个。为此,我在B.js中将变量声明为全局变量,然后尝试从A.js更改它们。这没用。 (我已经在html中正确引用了两个文件)。现在,我试图通过从A.js调用一个函数并将vars作为参数传递来更改B.js的vars。

B.js:

var re = '';
var un = '';

function init(response_string, username_string) {
   re = response_string;
   un = username_string;
}

A.js:

init(response, un);

B.js中的函数正确获取了参数,但是我似乎找不到改变全局变量的方法。它们仍然是“”。

编辑:我从A.js解析的值是非空字符串。我也尝试过这样做:init('test', 'test'); 但是全局变量仍然没有受到影响。

编辑2: 这是更多代码: index.html:

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css">
<script src="A.js"></script>
<script src="B.js"></script>

</head>

<body>

<input type="text" name="" id="inp">
<a href="" onclick="pass()">Go</a>


</body>

</html>

A.js:

function pass() {
var text = document.getElementById('inp').value;
pass2(text);
}

B.js:

var global_string = '';

function pass2(v) {
console.log(v);
global_string = v;
}

1 个答案:

答案 0 :(得分:1)

您正在调用带有两个变量作为参数的init(response, un),但是尚未定义第一个变量response,第二个变量un已定义为空字符串''位于代码开头。

使用两个非空字符串调用init(),您会看到全局变量unre得到正确的更新。

var re = '';
var un = '';

function init(response_string, username_string) {
   re = response_string;
   un = username_string;
}

init("test1","test2");
console.log(re);
console.log(un);