首页 > 代码库 > javascript 内部函数的定义及调用
javascript 内部函数的定义及调用
内部函数,定义在另一个函数中的函数
function outer() { console.log("out"); function inner () { console.log("in"); } } outer(); // out inner(); // 报错: inner is not defined
这里的inner是一个定义在outer中的内部函数,它的作用域在函数outer内部,外部运行无效。
1.那么如何在任何地方调用内部函数?
javascript允许像传递任何类型的数据一样传递函数,也就是说,javascript中的内部函数能够逃脱定义他们的外部函数。
① 给内部函数指定一个全局变量
var bgg; function outer() { console.log("out"); function inner () { console.log("in"); } bgg=inner; } outer(); // out bgg(); // in
② 通过在父函数中返回值来实现对内部函数的引用( return )
function outer() { console.log(‘out‘); function inner() { console.log(‘in‘); } return inner; } var res = outer(); // out res(); // in outer(); //out
在这里例子中,执行 out() ,只是运行这个函数,结果是什么?打印输出 out ,把函数 inner 作为函数 out 的返回值。 var res = out(),这句又在干什么?
这样子理解,等号会计算其右边的表达式,并且把右边表达式的值 赋值给等号左边。out函数运行的返回值是 函数 inner ,所以下一步中,运行 res, 会打印出 in 。
function outer() { console.log("out"); return function inner() { console.log("in") } } outer()(); // out in
上面这个例子中是 执行函数 out ,并把 函数返回值 inner 函数 返回给outer,out()(),这第二个括号相当于自执行函数了。
注意事项:1.return 是在函数语句结束时执行,并返回表达式的值作为函数的结果
2.返回空值,语法:return;
一般来讲,为事件处理函数返回return:false; ,作用在于阻止默认事件行为和取消默认动作,比如,在默认情况下点击一个<a>元素,那么页面就会跳转到元素href属性指定的页,那当你用return false;时,就相当于一个终止符,而return true;相当于一个执行符。
自己当时的一点误解解决:当return一个表达式时,会把表达式的值作为函数的结果,而这个值我们是看不到的,只有打印输出时我们才能看到这个函数的返回值。函数的运行结果和返回值并不是同一个“东西”。
javascript 内部函数的定义及调用