我们假设您有以下 Javascript 代码:
function random() {
var number = (Math.floor(Math.random() * 2));
document.getElementById('number').innerHTML = number;
return number;
};
function searchE(number) {
var english = englishID[number];
document.getElementById('english').innerHTML = english;
};
function searchJ(number) {
var root = root[number];
var masu = masu[number];
var te = te[number];
document.getElementById('root').innerHTML = root;
document.getElementById('masu').innerHTML = masu;
document.getElementById('te').innerHTML = te;
};
function process() {
var number = random();
searchE(number);
searchJ(number);
};
我的问题是当代码只输出随机数和searchE()
结果时。我认为问题在于我未正确执行var result = moof()
或未正确返回moof
的结果。
有人可以告诉我如何让它发挥作用吗?谢谢你的时间。
答案 0 :(得分:0)
问题在于:
function searchJ(number) {
var root = root[number];
var masu = masu[number];
var te = te[number];
var
被提升,所以对于翻译来说,它看起来像是:
function searchJ(number) {
var root;
var masu;
var te;
root = root[number];
masu = masu[number];
te = te[number];
因此,当您尝试访问外部作用域中的那些数组/对象时(我假设这些变量存在于外部作用域中,对吗?),您实际上是在引用内部的当前undefined
变量范围。使用与外部范围中使用的变量名不同:
function searchJ(number) {
var foundRoot = root[number];
var foundMasu = masu[number];
var foundTe = te[number];