js闭包问题 柔情只为你懂 2022-03-21 04:57 197阅读 0赞 > 闭包可以说是js的一个疑难问题,之所以难,是因为连概念都很复杂,在百度上搜了搜,解释一大堆,愣是没看懂,依照我的理解,如果你是初学者,就将它理解成一种跨越局部和全局的桥梁吧,如果你是大佬,跪求通俗且合理的解释,留言谢谢。 这里,我总结了一些题,大体思路以备注,由于是习题,所以我觉得每个人要有自己的理解和方法,表示曾今也被所谓的参考答案“害”的不能自己独立思考,所以只写出了最终答案,没有写自己的想法,也希望大家都能真正的理解。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>闭包</title> </head> <body> <button class="btn">按钮</button> <button class="btn">按钮</button> <button class="btn">按钮</button> <button class="btn">按钮</button> <button class="btn">按钮</button> <button class="btn">按钮</button> <button class="btn">按钮</button> <script> /* showname(); function showname(){ var num=10; return num; } showstu(); function showstu(){ console.log(showname()); }//输出结果为 10 //变量的全局与否都是1相对的,在showtu 中,num相当于全局变量*/ // 没有关键字的变量为全局变量 // function f1(){ // n = 999; // console.log(n); // } // f1(); // console.log(n); //999 // f1(); // function f1() { // n = 999; // function f2() { // console.log(n); //999 // return n; // } // } // 重点 // function f1(){ // var num=10; // function f2(){ // return num; // } // return f2; // } // var res=f1()();//res=f2; // console.log(res);//第一种写法 // // var res=f1();//第二种写法 //res=f2; // // res(); // // console.log(res());//两种方法含义一样,第一种借助第一种理解 // var nAdd = null; // function f1() { // var n = 999; // nAdd = function () { // n += 1; // } // function f2() { // console.log(n); // } // return f2; // } //闭包的应用 值会存在内存中 // var result = f1(); //n // result(); //999 // nAdd(); //999 // result = f1(); // result(); //999 // nAdd(); // result = f1(); // result(); //999 // nAdd(); // result(); //999 // nAdd(); // result(); //999 // nAdd(); // function foo(x) { // var tmp = 3; // return function f2(y) { // alert(x + y + (++tmp)); // }; // } // var bar = foo(2); // bar 现在是一个闭包 bar=f2 // bar(10);//表示 f2 的执行 // // var bar=foo(2)(10); 等同于上两行 //重点 // function fun(n,o) { // console.log(o) // return { // fun:function(m){ // return fun(m,n); // } // }; // } // var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined 0 0 0 // var b = fun(0).fun(1).fun(2).fun(3);//undefined 0 1 2 // var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined 0 1 1 // function f1(a,b,c,d){ // /*!*arguments 是当前函数的参数列表 类似于数组的集合 使用索引值来取*!*/ // console.log(arguments.length); // } // f1(1,2,3,4); // var sum = function () { // var cache; // if (arguments.length === 1) { // cache = arguments[0];//如果arguments对象的长度为1,也就是参数只有1个时,将这个参数赋值给cache,暂存 // return function (number) {//返回一个函数,函数里的参数(也就是第二个括号里的参数)与之前第一个括号里的参数相加 // return cache + number // } // } else { // return arguments[0] + arguments[1]//如果arguments对象的长度不为1,那么两个参数相加 // } // } // console.log(sum(2, 3));//5 // console.log(sum(2)(3));//5 // sum(2)= function (number) sum(2)(3)=function (number)() 大体理解,原理上是错的 /* function f1() { function f2() { console.log(1); } return f2; } var res = f1();//f2 res(); var res = f1()();*/ // 还是一样的原理 var btn = document.getElementsByClassName("btn"); for (var i = 0; i < btn.length; i++) { //参数的传递 桥梁 /* btn[i].index=i; btn[i].onclick=function (){ alert(this.index); }*/ /*自执行函数的闭包*/ (function (x) { btn[i].onclick = function () { alert(x); } })(i); } </script> </body> </html>
相关 js闭包 所谓闭包,就是变量 从外部开始,到达父函数体,然后再从父函数体内的函数(子函数) 返回到父函数体,简单一句话概括:函数外部调用函数内部的变量。 通过下面的代码给出结果,解释一 朱雀/ 2022年08月13日 14:00/ 0 赞/ 241 阅读
相关 JS——闭包 //在函数外部读取函数内部的变量 function c(){ var a=1000; function x(){ 以你之姓@/ 2022年06月04日 09:48/ 0 赞/ 264 阅读
相关 JS闭包 JS闭包 写在闭包之前: 上下文(context) 是一段程序运行所需要的最小数据集合。我们可以从上下文交换(context switch)来理解上下文,在多进程或多线 一时失言乱红尘/ 2022年05月25日 02:05/ 0 赞/ 293 阅读
相关 js闭包问题 > 闭包可以说是js的一个疑难问题,之所以难,是因为连概念都很复杂,在百度上搜了搜,解释一大堆,愣是没看懂,依照我的理解,如果你是初学者,就将它理解成一种跨越局部和全局的桥梁吧 柔情只为你懂/ 2022年03月21日 04:57/ 0 赞/ 198 阅读
相关 js闭包 闭包指的是:能够访问另一个函数作用域的变量的函数。 清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量。 闭包就是将函数内部和函数外部连接起来的一座桥 偏执的太偏执、/ 2022年03月09日 01:36/ 0 赞/ 368 阅读
相关 JS中闭包问题 看笔记上有人对这个说是个bug,其实是利用JS中栈内存在执行过程中没有释放的特点,而且还给了例子 <p>局部变量计数。</p> <button type="b 骑猪看日落/ 2021年10月29日 22:48/ 0 赞/ 335 阅读
相关 js--闭包 前言 前一篇博客是介绍的作用域与作用域链,已经开始了JavaScript高级部分的学习,那么这篇博客简单的介绍一下js的闭包。 内容 所谓闭包就是函数 函数作 本是古典 何须时尚/ 2021年09月27日 04:24/ 0 赞/ 487 阅读
相关 js 闭包 闭包 > 闭包就是能够读取其他函数内部变量的函数。闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 ![6587 ╰半夏微凉°/ 2021年09月10日 07:52/ 0 赞/ 466 阅读
相关 js 闭包 <html> <head> <title>闭包</title> <meta charset="utf-8"> 梦里梦外;/ 2021年08月28日 01:13/ 0 赞/ 471 阅读
相关 js闭包 Js语言在函数内部可以直接读取全局变量,但函数外部无法读取函数内的局部变量 <script type="text/javascript"> var n=100 朱雀/ 2021年06月24日 16:00/ 0 赞/ 498 阅读
还没有评论,来说两句吧...