zoukankan      html  css  js  c++  java
  • 第三章 Js变量的作用域和匿名函数

    3.1

    先看下面的事例:

    ①var temp=0;

    ②temp=0;

    当js解析器检测到①这种情况的时候,解析器会为这个变量开辟一个内存空间,如果前面已经存在这个变量,就会把这个变量覆盖掉。

    当解析器检测到①这种情况的时候,解析器会寻找当前对象的父级对象有没有这个变量,以此查找,只到找到位置;如果还找不到,就会在windows对象里定义这个变量。

    再看下面例子

    function f() {
          var _temp = 0;
          console.log(_temp);
    }
    f();
    console.log(_temp);
    
    ②function f() {
          _temp = 0;
          console.log(_temp);
    }
    f();
    console.log(_temp);

    大家看可以在文件夹第三章01.htm、02.htm中看到两段代码,大家可以先猜测下执行结果。

    从上面的代码中大家可以总结出
    ⒈我们定义变量的时候如果加上var 就会避免给全局增加不必要的变量,我们定义变量的时候尽量前面加 var
    2.函数内部定义的变量是私有的

    3.2匿名函数

    在上一节大家已经看到了匿名函数。匿名函数是一类特殊的函数,不用调用立即执行,并且在里面的定义的变量不会影响到函数外面。

    这样,匿名函数就有了一个特殊的用途,放置全局污染;Jquery就是一个匿名函数

    (function (z, v) {
       // jquery code
    })(window);
    
    这里等价的写法就是
    
    function myfun(z, v) {
       // jquery code
    });
    
    myfun(window);

    大家对照参考下,就可以明白匿名函数的写法了

  • 相关阅读:
    English trip V2-B 14 Yes, I can! 是的,我能! Teacher:Russell
    I1-3 Weather Teacher:Corrine
    4-redis数据过期策略
    redis持久化
    redis优势
    解决error while loading shared libraries
    1-zookeeper基本原理和使用
    ObjectiveSQL框架让你不要再写复杂SQL
    sharding-proxy+sharding-ui安装使用配置
    vim 多行取消注释
  • 原文地址:https://www.cnblogs.com/blowfish/p/3245215.html
Copyright © 2011-2022 走看看