今天被将要入职的公司的开发人员询问了一个项目中遇到的问题,关于函数内访问外部函数的情况。大致现象如下:js文件中有两个同级函数FnA和FnB,想在函数FnA中调用FnB。
一看就是函数作用域在作怪。首先想到的解决办法就是通过回调函数。但是,最近工作中很少遇到这种情况,也很少涉及回到函数,当时由于时间紧迫,又是关乎自己能否成功通过面试,心情有些紧张,解决方案写了一半(好囧~~~)。好在之前应答不错,顺利通过面试。不过,对于遇到问题,自己有种不解决不罢休的态度。回到家后,有复原了场景,静下心细想之后,终于解决了。现在把完整解决方案附上。
情景:在HTML页面中写一个button按钮,通过点击按钮,输入FnB中的输入的语句。
HTML代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script src="test.js"></script>
</head>
<body>
<div>
<button id="change">change</button>
</div>
</body>
</html>
JS代码
$(document).ready(function(){
var testJs = {
init() {
this.FnA(this.FnB);
console.log('这是通过直接调用输出');
this.FnB();
},
FnA(callback) {
$('#change').click(function() {
console.log('这是通过点击事件输出');
callback();
})
},
FnB() {
console.log('函数FnB输出的数据!');
}
}
testJs.init();
});
页面直接加载输出结果如下图

通过点击按钮输出结果如下图

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/javascript/js-callback.html