javascript - 请教一段js代码的解释

查看:99
本文介绍了javascript - 请教一段js代码的解释的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我注释了下我的思路
我这样想正确吗?
后面问号的我不懂什么意思
可以帮我解释下吗?这种函数应用场景是什么
(function(){

})(function(){

}())
这种立即调用函数里面再写一个立即调用函数的写法叫什么?


    var fun = (function(a){//定义函数表达式并定义参数a
        this.a = a;//定义当前域变量a等于参数a
        return function(a){//返回一个匿名函数定义参数a
            a+= this.a;//a等于this.a+1
            return a;//返回a
        }
    })(function(a,b){//??????
        return a;//????
    }(1,2))//??????
    fun(4)

解决方案

楼主的变量用得有点乱, 先给你改改.

var fun = (function(a){ //定义函数表达式并定义参数a
        this.a = a; //定义当前域变了a等于参数a
        return function(num){ //返回一个匿名函数定义参数a
                num += this.a; //a等于this.a+1
                return num;   //返回a
                }
        })(function(x,y){   //??????
            return x;   //????
            }(1,2)) //??????
    alert(fun(4));

每个函数都有一个单独的作用域, 除非特殊情况, 定义函数的形参时尽量不要用一样的. 不然会绕.
以上总共出现了三个函数:
函数1: 参数为a
功能: 接收一个值, 将这个值赋给this.a, 并返回函数2.
函数2: 参数为num
功能: 接收一个值, 返回这个值 + this.a
函数3: 参数为x,y
功能: 接收两个值, 返回第一个值.
函数功能已经分析清楚啦, 那就来看看上面的代码都发生了什么.
函数1需要一个参数, 把函数3当做参数传进去了, 函数3接收两个参数然后返回第一个(此处是1), 就相当于直接把1当做参数传递给了函数1.
函数1接收参数后先为执行对象定义一个属性a, 然后将传递进来的参数赋值给属性a. 再然后返回函数2.
函数2接收一个参数(此时是4), 返回这个参数 + this.a
故返回了5.

这篇关于javascript - 请教一段js代码的解释的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆