zoukankan      html  css  js  c++  java
  • JavaScript 作用域 匿名函数 模仿块级作用域(私有作用域)

    作用域 

    对于有块级作用域的语言来说,for语句中定义并初始化的变量i在循环外是无法访问的。

    而javascript没有块级作用域,for语句中定义的变量i在循环结束后,依旧会存在于循环外部的执行环境(作用域)中,在这里i的作用域是全局环境。

    具体来说就是:使用var关键字声明变量时,这个变量会自动添加到距离最近的可用环境中。对于函数而言,这个最近的环境就是函数的局部环境。如果变量在未经声明的情况下被初始化,则该变量会被自动添加到全局环境。

    不过有时候的确很需要块级作用域来解决一些问题,这时候我们就可以使用匿名函数来模仿块级作用域。

    匿名函数

    匿名函数就是没有名字的函数,有时候也被称为拉姆达(lamda)函数。

    普通的函数声明如下:

    1 function functionName(){
    2  // Code goes here
    3 }

    匿名函数 如下:

    1 function(){                               //   顾名思义,函数没有名字
    2 // Code goes here
    3 }

    模仿块级作用域(私有作用域)

    Javascript中模仿块级作用域

    模仿块级作用域(私有作用域)的匿名函数的方式如下:

    (function(){
        //块级作用域
    })();

    上面的代码中,首先以函数表达式的方式定义了一个函数,然后立即调用它。在这里定义函数的方式就是先创建一个匿名函数,然后将其赋值给变量myFunc,而在函数名称后加一对圆括号即表示调用函数。

    因为在javascript中,function关键字表示一个函数声明的开始,而函数声明后面不能直接跟圆括号。而函数表达式后面可以跟圆括号,来表示函数调用。

    注意:

    在函数声明外面加一对圆括号就可以转换成函数表达式,事实上在括号前面添加 + —  等都能够将其转化为表达式。

     立即执行函数 函数作用域

    (The End)
  • 相关阅读:
    (二)php的常量和变量
    关于标签系统的一点想法。
    Linux运维工程师中级面试题
    Linux C 编程内存泄露检测工具(一):mtrace
    掌握sudo的使用
    Scala极速入门
    处理千万级以上的数据提高查询速度的方法
    linux svn服务器搭建、客户端操作、备份与恢复
    select/poll/epoll 对比
    汇编指令和标志寄存器
  • 原文地址:https://www.cnblogs.com/oneplace/p/5499662.html
Copyright © 2011-2022 走看看