2 qq 32219139 qq_32219139 于 2016.05.06 12:58 提问

JS中匿名函数嵌套匿名函数

图片说明
求详细说明为什么其中test=3明白 然后匿名函数中的匿名函数怎么调用 如果还有fn(4)
fn(5) 为什么传入的都是b的值

2个回答

mazegong
mazegong   2016.05.06 15:33
已采纳

执行完fn(2)后,fn对应的function变了,变成
function(b){
console.log(test+b);
}
所以后面fn(3),fn(4),fn(n)都是执行function(b)这个函数

danielinbiti
danielinbiti   Ds   Rxr 2016.05.06 13:25
 执行完fn(2)后,fn对应的function变了,变成
 function(b){
    console.log(test+b);
 }
 所以后面fn(3),fn(4),fn(n)都是执行function(b)这个函数
qq_32219139
qq_32219139 回复danielinbiti: 谢谢 明白了
大约 2 年之前 回复
danielinbiti
danielinbiti 回复qq_32219139: 对,这个fn是全局的,不是局部变量
大约 2 年之前 回复
qq_32219139
qq_32219139 回复danielinbiti: 懂了 因为在fn函数中执行到test+=1的时候 fn重新赋值了 然后这个fn没加var 所以之后运行的都是后来赋值的function(b){ console.log(test+b); }这么理解对吗
大约 2 年之前 回复
danielinbiti
danielinbiti 回复qq_32219139: fn重新赋值了
大约 2 年之前 回复
danielinbiti
danielinbiti 回复qq_32219139: 因为执行fn(2)以后,fn变了,不在是function(test)了,而是function(b){ console.log(test+b); }了
大约 2 年之前 回复
qq_32219139
qq_32219139 回复danielinbiti: 也就是说 为什么fn(2)的时候执行test+=1,而后面的所有fn(3),fn(4)都是指给形参b赋值
大约 2 年之前 回复
qq_32219139
qq_32219139 回复danielinbiti: 就是test的值只变成3,后面再调用函数的时候 test的值不变了
大约 2 年之前 回复
danielinbiti
danielinbiti 回复qq_32219139: 一次?什么意思
大约 2 年之前 回复
qq_32219139
qq_32219139 为什么fn(2)只执行一次呢
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
js匿名函数括号的作用
原文链接:js中(function(){…})()立即执行函数写法理解      详细解释请看原文。我觉得还是挺有帮助的。我主要摘抄了部分主要内容,加了部分自己的理解:      ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执
js中匿名函数的写法
JS中匿名函数会直接运行 转载链接:http://www.jb51.net/article/24759.htm (function () { alert("adsfas") })(); 带参数的情况:“asdf”是实参,para1是形参 (function(para1){ alert(para1); })("asdf") 链式调用,先后弹
js匿名函数作为函数参数
由衷的感叹,js真是烦。 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长。 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的区别,名字上不知道坑了多少人)也能变通实现。 温故知新,今天又回味了一遍,匿名函数作为函数参数。 代码很短,五脏俱全。 function t
JS之匿名函数与闭包
匿名函数是指没有指定函数名称的函数,先来看下面的例子:想想看结果是什么?var a = function(t) { return t; } (1 + 2).toString(); alert(a); 这里就是定义了一个匿名函数,传入参数(1+2)并且执行,然后赋值给变量a。因为在第一行没有写分号.看下面的例子你就理解了 var a = 1 + 3; alert( a);闭包
JS中的匿名函数
定义函数的方式有两种,一种是函数声明,一种是函数表达式(匿名函数)。一.函数声明(function 语句)   要使用一个函数,我们就得首先声明它的存在。而我们最常用的方式就是使用function语句来定义一个函数,如:function sayHi(){ alert("hi"); }   当然,你的函数也可以是带参数的,甚至是带返回值的。function abc(x,y){ r
js匿名函数的调用例子
匿名函数就是没有实际名字的函数。 java
js return和匿名函数
今天一个刚学js的朋友给了我一段代码问为什么方法不执行,代码如下: 代码如下: function makefunc(x) {   return function (){    return x;   }  }  alert(makefunc(0));  其实不是不执行,只是朋友的意思这里alert出来的应该是“0”,而不是function (){retu
js之匿名函数及其应用
通常我们在引入jquery时,或者引用js插件时经常看到开头有一些让人很难以理解的js代码,如果不理解清楚,会对阅读插件源码进行高阶编程造成障碍。 比如,jquery源码中 (function( global, factory ) {  //jquery内容 window.jQuery = window.$ = jQuery;
匿名函数,子函数和嵌套函数
一、匿名函数 anonymous function匿名函数基本定义fhandle = @(arglist)exprexpr 具体的函数表达式 arglist 指定的函数自变量匿名函数的种类(1)单变量匿名函数f = @(x)x.^2;含有参数、参数值已知的单个自变量的匿名函数a = 10; b = 20; f = @(x)a*x + b; f(1:6)(2)多变量匿名函数g = @(x,y)x.^
JS 匿名函数的写法
js自执行函数的几种不同写法的比较,需要的朋友可以参考下经常需要一个函数自执行,可惜这一种写法是错的: function(){alert(1);}(); 原因是前半段“function(){alert(1);}”被当成了函数声明,而不是一个函数表达式,从而让后面的“();”变得孤立,产生语法错。按上面的分析,这一段代码虽说没有语法错,但也是不符合我们的预期的,因为这个函数并没有自执行