立即执行匿名函数中的变量和函数怎么访问?
如何才能在外部调用fn1()函数和fn2()函数
如何才能在外部访问到age变量
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript中立即执行的匿名函数</title>
<script type="text/javascript">
var hometown = '江西省赣州市于都县';
console.log(hometown);
(function (){
console.log('我是一个匿名函数' + hometown);
})();
(function (){
var age = 24;
console.log('hello,我是一个匿名函数');
function fn1(){
console.log('我是fn1函数');
}
fn1();
function fn2(){
console.log('我是fn2函数');
}
fn2();
})();
//涉及到闭包的知识
//立即执行匿名函数中的变量和函数怎么访问?
//如何才能在外部调用fn1()函数和fn2()函数
fn1(); //报错Uncaught ReferenceError: fn1 is not defined
// fn2();
//如何才能在外部访问到age变量
// console.log(age); //报错Uncaught ReferenceError: age is not defined
</script>
<script type="text/javascript">
console.log('我的家乡在' + hometown);
</script>
</head>
<body style="background-color: #CCE8CF;">
<h3 style="color: #cd1636;">
JavaScript中立即执行的匿名函数
</h3>
</body>
</html>
let dd = (function (){
var age = 24;
console.log('hello,我是一个匿名函数');
function fn1(){
console.log('我是fn1函数');
}
fn1();
function fn2(){
console.log('我是fn2函数');
}
fn2()
return fn2
})() //匿名函数执行与否只跟最后有没有这个 '()'有关系
dd()
另外如果你想调用其他函数 就必须把它们的返回出来并赋值给某个变量,
你可以理解为 匿名函数内是一个封闭的小房子 如果你要别人能找到里面的东西只能递出一个纸条(也就是地址指针。return的 fn2 其实是fn2的指针,让拿到这个指针的可以调用fn2)。
如果这个函数运行结束里面的东西都没有跟外界有交互(也就是外界没有谁保存了里面东西的指针),里面的东西都会被销毁。
想要调用其他的函数 就要一起返回出去 或者 赋值给外面的变量
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript中立即执行的匿名函数</title>
<script type="text/javascript">
var hometown = '江西省赣州市于都县';
console.log(hometown);
(function() {
console.log('我是一个匿名函数' + hometown);
})();
(function(){
var exports={};
var age = 24;
console.log('hello,我是一个匿名函数');
function fn1() {
console.log('我是fn1函数');
}
fn1();
function fn2() {
console.log('我是fn2函数');
}
fn2();
exports.efn1=function(){
return fn1();
}
window.exports=exports;
})();
//涉及到闭包的知识
//立即执行匿名函数中的变量和函数怎么访问?
//如何才能在外部调用fn1()函数和fn2()函数
exports.efn1();
// fn1(); //报错Uncaught ReferenceError: fn1 is not defined
// fn2();
//如何才能在外部访问到age变量
// console.log(age); //报错Uncaught ReferenceError: age is not defined
</script>
<script type="text/javascript">
console.log('我的家乡在' + hometown);
</script>
</head>
<body style="background-color: #CCE8CF;">
<h3 style="color: #cd1636;">
JavaScript中立即执行的匿名函数
</h3>
</body>
</html>
把这个函数挂载到window对象上,外部就可以直接访问了
function fn1() 放到(function(){}())外就好了
这里面有个js代码执行顺序的问题