美文网首页
【函数表达式】模仿块级作用域

【函数表达式】模仿块级作用域

作者: Wonder233 | 来源:发表于2017-11-17 11:47 被阅读0次

1、JavaScript没有块级作用域的概念。
2、在块语句中定义的变量,实际上是在包含函数中而非语句中创建的。
3、JavaScript中多次声明同一变量不会出错,它只会对后续的声明视而不见,但是会执行后续声明中的变量初始化。

匿名函数可以模仿块级作用域。

//用作块级作用域(通常称为私有作用域)的匿名函数的语法
(function(){
    //块级作用域
})();

上面代码定义并立即调用了一个匿名函数。
将函数声明包含在一对圆括号中,表示它实际上是一个函数表达式。而紧随其后的另一对圆括号会立即调用这个函数。

但是下面的代码会导致错误。

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

因为JavaScript将function关键字当做一个函数声明的开始,而函数声明后面不能跟圆括号,函数表达式后面可以跟圆括号。

临时需要一些变量,就可以使用私有作用域:

function outputNumbers(count){
    (function () {
        for(var i = 0;i<count;i++){
            alert(i);
        }
    });
    alert(i);    //导致一个错误!
}

匿名函数模仿块级作用域经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。

相关文章

  • 第七章 块级作用域、私有变量

    模仿块级作用域 私有变量  js没有块级作用域,只有全局作用域和局部作用域(函数作用域),块级作用域是指某一部分代...

  • JavaScript函数表达式——模仿块级作用域

    模仿块级作用域 匿名函数可以用来模仿块级作用域。 以上代码定义并立即调用了一个匿名函数,将函数声明包含在一对圆括号...

  • 02- ES6 函数声明

    1、立即执行函数表达式 IIFE 用块级作用域写法,代替立即执行函数表达式IIFE。 IIFE写法: 用“块级作用...

  • 我的JS笔记 -- 模块

    模块化可以使你的代码低耦合,功能模块直接不相互影响。 模仿块级作用域 JS中没有块级作用域,而是函数作用域,函数中...

  • JavaScript高级程序设计笔记7

    函数表达式 递归 闭包 (1)闭包与变量 (2)关于this对象 (3)内存泄漏 模仿块级作用域 私有变量 (1)...

  • JS函数表达式+

    模仿块级作用域 Javascript,没有块级作用域,在块语句中定义的变量,实际上是包含在函数中而非语句中创建 在...

  • 9、函数表达式2(《JS高级》笔记)

    三、模仿块级作用域 如前所述,JS没有块级作用域的概念。下面通过例子说明: 说明:这个函数如果在Java等语言中,...

  • 2018-12-05

    7.3模仿块级作用域 javascript没有块级作用域的概念。这就意味着在快语句中定义的变量,实际上是在包含函数...

  • 闭包及获取内部方法

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

  • ES6基础

    块级作用域、字符串、函数 作用域在之前的js中,只有函数作用域和全局作用域,指的是变量只能在函数中或者全局中,块级...

网友评论

      本文标题:【函数表达式】模仿块级作用域

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