zoukankan      html  css  js  c++  java
  • JavaScript Closures 闭包

    在一些编程语言中, 当我们执行完成function中的局部代码仅在函数执行期间可运行. 但是JS 事不一样的

    闭包总结来说, 就是innerFunction 总是有使用outer function 的 variables 和 paramaters, 即使在outer function returned 之后.

    这句话可能解释起来比较困难. 但是我们通过下面案例来理解闭包

    <script>
            function retirement(retirementAge) {
                var a = ' years left until retirement.';
                return function(yearOfBirth) {
                    var age = 2018 - yearOfBirth;
                    console.log((retirementAge - age) + a);
                }
            }
    
            var retirementUS = retirement(66);
            retirementUS(1990); // 38 years left until retirement.
        </script>
    <script>
            function interviewQuestion(job) {
                return function (name) {
                    if (job === 'designer') {
                        console.log(name + ', can you pls explain what UX design is?');
                    } else if (job === 'teacher') {
                        console.log('What subject do you teach, ' + name + '?');
                    } else {
                        console.log('Hello ' + name + ', what do you do?');
                    }
                }
            }
    
             interviewQuestion('teacher')('二狗子'); // What subject do you teach, 二狗子?
        </script>

    但是,

    如果不是某些特定任务需要使用闭包,在其它函数中创建函数是不明智的,因为闭包在处理速度和内存消耗方面对脚本性能具有负面影响。

    实用的闭包

     

  • 相关阅读:
    MovieLens
    牛顿法与拟牛顿法学习笔记(一)牛顿法
    Softmax回归
    PCA练习
    PCA主成分分析
    算法——A*——HDOJ:1813
    spring 入门篇
    java——多线程——单例模式的static方法和非static方法是否是线程安全的?
    java——数据库——commons-DbUtils
    java——HashCode和equal方法
  • 原文地址:https://www.cnblogs.com/TheMiao/p/9777821.html
Copyright © 2011-2022 走看看