美文网首页
作用域、匿名函数、闭包

作用域、匿名函数、闭包

作者: Simon_s | 来源:发表于2016-10-10 21:18 被阅读8次

1、//作用域的概念

//作用域:变量的生效范围,如果变量在整个页面中都可以访问到,则该变量就是一个全
局变量;如果变量的有效范围只是在某一个范围内,该变量就是一个局部变量。

//在函数内部,使用var定义的变量是局部变量,除此以外,都是全局变量。没用用var定义的变量,则是一个全局变量


            

    
//      var a = 12;
//      function useA () {
// 因为在内部作用域中使用到了和外部作用域同名的变量,所以需要先判断内部有没有重
新定义这个变量,(1):如果重新定义了,那么就是用新定义的这个变量,(2):如 果没有,则该变量就是外部作用域中的变量

//          alert(a); // undefine
//          var a = 24;
//          
//          return a;
//      }
//      
//      alert(a); // 12
//      alert( useA() );  // 24
//      
//      alert(a);  // 12



function demoFun () {
alert(e);
}




demoFun();

  var e = 23;


function demoFun1 () {
alert(e);
}

demoFun1();

2、 //匿名函数

//具名函数:有函数名,可以通过函数名来调用
//匿名函数:没有函数名,可以通过事件来调用,变量调用,自调用;
var a = function(){
alert("hello world")
};

(function (a){alert("goodbye world"+a)})("sdfds");

//给事件添加匿名函数
//匿名函数可以当做参数传递
setInterval(function(){
alert("fdsds")
},1000)

//匿名函数可以当做返回值

3、//闭包

//可以通过闭包在外部访问局部变量
//凡是放在返回函数中的变量会被提升为全局变量,驻留在内存中不释放
function f1(){
var n = 999;
nAdd = function(){n+=1};
function f2(){
    alert(n)
}
return f2;
}

var result = f1();
nAdd();
result();




//使用闭包的思路解决循环添加事件的Bug
//定义一个属性存储每次循环的i的值
/*for(var i=1;i<4;i++){
var btn = document.getElementById("button"+i)
btn.tempNumber = i
btn.onclick=function(){
    alert("button"+this.tempNumber)
}
}*/

4、//用闭包解决

for(var i=1;i<4;i++){
var btn = document.getElementById("button"+i);
//alert(btn)
(function(num){
    btn.onclick=function(){
        alert("button"+num)
    }
})(i)
}

相关文章

  • 2018-06-02 作用域链 闭包 匿名函数

    主要讲了闭包是什么 闭包造成的内存泄漏 匿名函数模拟私有变量 匿名函数模拟块级作用域 匿名函数模拟单例类 作用域链...

  • 作用域、匿名函数、闭包

    1、//作用域的概念 2、 //匿名函数 3、//闭包 4、//用闭包解决

  • 理解javascript(匿名函数和闭包)这篇文章就够了

    匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。 一.匿名函数 二:闭包 闭包的概念:闭包是指...

  • 闭包及获取内部方法

    闭包获取内部方法。 闭包的概念 作用域、作用域链(防止内存泄漏) 避免泄漏,写在匿名函数中,模仿块级作用域。这样匿...

  • PHP闭包和反射的一点总结

    一、什么是闭包 闭包是指有权访问另一个函数作用域的变量的函数。 匿名函数(Anonymous functions ...

  • 15.javascript 匿名函数和闭包

    学习要点: 1.匿名函数2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。声明:本节内...

  • golang关于defer的问题

    要弄明白defer首先得搞清楚闭包和局部作用域。 闭包 闭包是匿名函数与匿名函数所引用环境的组合。看一个例子: 看...

  • JavaScript学习笔记(四)——函数表达式

    匿名函数 作用:模仿块级作用域 递归 严格模式下使用命名函数 闭包 闭包是指有权访问另一个函数作用域中的变量的函数...

  • 14.JS基础之作用域与闭包

    作用域: 全局作用域 函数作用域 块级作用域(ES6新增) 常见的闭包有:作为函数返回值的闭包与作为函数参数的闭包...

  • 作用域和闭包

    目录 概述 作用域编译过程词法作用域全局作用域函数作用域 闭包循环和闭包闭包的用途性能 总结 概述 作用域和闭包一...

网友评论

      本文标题:作用域、匿名函数、闭包

      本文链接:https://www.haomeiwen.com/subject/oaevyttx.html