<script>
function fn1(){
var a=123;
function fn2(){
alert(a)
}
}
fn1()//在调用函数fn1的时候,fn2这个函数已经被读取到了
fn2()//但是调用fn2时却报错,这是什么原因呢?哪里理解不对吗?
</script>
<script>
function fn1(){
var a=123;
function fn2(){
alert(a)
}
}
fn1()//在调用函数fn1的时候,fn2这个函数已经被读取到了
fn2()//但是调用fn2时却报错,这是什么原因呢?哪里理解不对吗?
</script>
function fn1(){
var a = 123;
return fn2() {
console.log(a);
}
}
var fn2 = fn1(); // 将fn2函数返回到全局作用域并赋值给一个变量
fn2(); // 然后才可以在全局作用域下调用 => 123
换种写法
function fn1(){
var a=123;
var fn2 = function(){
alert(a)
}
}
在fn1中,a和fn2都可以理解为私有属性,即不对外公开的。
若要公开,需要把私有属性return出去。
在这里fn2只对函数fn1可见,全局作用域不能访问函数fn2的。楼主把代码改成这样应该就能访问了:
function fn1(){
var a=123;
function fn2(){
alert(a)
}
return {
fn2
}
}
fn1().fn2() //输出 123
13 回答12.9k 阅读
7 回答2k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
f2是在f1里声明的 你在外面调肯定报错呀
你应该改成return f2()
调用的时候用f1()()就可以了