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内存管理机制与垃圾回收机制
    PHP Laravel5实现的RBAC权限管理操作示例
    PHP实现微信企业付款到个人零钱步骤
    ThinkPHP 6.0 管道模式与中间件的实现分析
    深入讲解 Laravel 的 IoC 服务容器
    ThinkPHP6 核心分析:系统服务
    PHP 性能优化
    PHP 7.4 新语法:箭头函数
    深入理解 PHP 的 7 个预定义接口
    Java实现 LeetCode 795 区间子数组个数 (暴力分析)
  • 原文地址:https://www.cnblogs.com/oneplace/p/5499662.html
Copyright © 2011-2022 走看看