美文网首页
闭包知识点总结

闭包知识点总结

作者: 谢环志 | 来源:发表于2016-09-04 18:48 被阅读0次

问答

  • 什么是闭包? 有什么作用
    答:
    1.闭包就是有权访问另一个函数作用域中的变量的函数,常见的是一个函数里有内部函数,内部函数访问外部函数的局部变量。
    2.1,读取内部变量;2,这些变量可以保存在内存中。

  • setTimeout 0 有什么作用
    答:其他代码执行结束后,立即执行setTimeout 0 的代码。0 代表延迟执行时间

代码

  • 下面的代码输出多少?修改代码让fnArri
    输出 i。使用两种以上的方法
 var fnArr = []; 
for (var i = 0; i < 10; i ++) {
 fnArr[i] = function(){
 return i;
 }; } 
console.log( fnArr[3]() ); //10

答:
方法一

var fnArr = [];
 for(var i=0;i<10;i++){
 (function(n){
 fnArr[i] = function(){
 return n;
 };
 })(i);
console.log( fnArr[3]() );

方法二

var fnArr = []
for (var i = 0; i < 10; i++) { 
(function() {
 var n = i
 fnArr[n] = function() { 
return n } }())}
console.log(fnArr[3]())
  • 使用闭包封装一个汽车对象,可以通过如下方式获取汽车状态
var Car = (function() {
    var speed = 0;
    function accelerate() {
        speed += 10;
    }
    function decelerate() {
        speed -= 10;
    }
    function getSpeed() {
        console.log(speed);
        return speed;
    }
    function getStatus() {
        if (speed > 0) {
            console.log('running');
        }else {
            console.log('stop');
        }  
    }
    function setSpeed(i) {
        speed = i;
    }
    return {
        accelerate: accelerate,  
        decelerate: decelerate,
        getSpeed: getSpeed,
        getStatus: getStatus,
        setSpeed: setSpeed 
    };
}());
  • 写一个函数使用setTimeout模拟setInterval的功能
var i = 0
function intv() {
  setTimeout(function() {
      console.log(i++) 
      intv()
  }, 1000)
}
  • 写一个函数,计算setTimeout平均[备注:新加]最小时间粒度
function getmin(){
    var i = 0;
    var start = Date.now();
    var clock = setTimeout(function(){
        i++;
        if(i === 1000){
            clearTimeout(clock)
            var end = Date.now();
            console.log((end-start)/i);
        }
        clock = setTimeout(arguments.callee,0)
    },0)
}
getmin()

下面这段代码输出结果是? 为什么?

var a = 1;
setTimeout(function(){
    a = 2;
    console.log(a);
}, 0);
var a ;
console.log(a);
a = 3;
console.log(a);

答:输出结果为1,3,2.
因为setTimeout(,0)使内容被放到执行对列最后,等其他执行完毕后才立即执行。

*下面这段代码输出结果是? 为什么?

var flag = true;
setTimeout(function(){
    flag = false;
},0);
while(flag){}
console.log(flag);

答:没有输出。因为setTimeout是在执行完其他代码之后再执行,所以在执行完第一句之后,就到了下面的while循环,flag为true,为死循环,执行空语句,无输出。

*下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)

for(var i=0;i<5;i++){
    setTimeout(function(){
         console.log('delayer:' + i );
    }, 0);
    console.log(i);
}

答:输出是0,1,2,3,4,delayer:5(五次)。

for (var i = 0; i < 5; i++) { 
setTimeout((function(num) {
 return function() {
 return console.log('delayer: ' + num) }
}(i)),0) 
console.log(i)}

相关文章

  • Swift基础语法-闭包,闭包函数回调,尾随闭包,闭包捕获值,循

    本节知识点 闭包的基本概念 闭包基本使用 闭包表达式作为回调函数 闭包的多种写法(尾随闭包) 闭包表达式优化 闭包...

  • 2020-05-24

    日常学习知识点总结(JS篇) 1、闭包: 闭包就是函数中的函数,里面的函数可以访问外面函数的变量,外面的变量是内部...

  • Gradle开发-Groovy闭包

    # 闭包 闭包的基础知识 闭包的使用 闭包 this,owner,delegate 的理解 总结 ## 闭包的基础...

  • 闭包知识点总结

    问答 什么是闭包? 有什么作用答:1.闭包就是有权访问另一个函数作用域中的变量的函数,常见的是一个函数里有内部函数...

  • 闭包

    本文涉及知识点 什么是闭包? 闭包有什么用? 什么是闭包? ok,这三行代码就是一个闭包。在这三行代码中,有一个局...

  • 浅谈闭包

    闭包是JavaScript的重点也是难点之一,由于涉及多重知识点,对初学者来说比较难理解。本文将闭包相关的知识点进...

  • 实现lazyMan

    涉及的知识点: 流程控制:创建task任务队列,使用push、shift、unshift方法操作任务 闭包:当闭包...

  • JavaScript闭包(三)

    目录 1.执行环境与作用域链 2. 立即执行函数 3. 闭包知识点 3.1 什么是闭包 3.2 使用闭包的意义与注...

  • [程序员每日5分钟]JS 中的闭包是什么

    闭包 是前端开发者面试必问的一个知识点。1、什么是闭包?2、闭包的作用是什么? 一、变量的作用域 你要学习和理解闭...

  • 2020-12-08

    总结 一、闭包 闭包:当一个函数使用作用域外部变量,这个函数就是闭包例: 闭包的用途: 1. 储存变量:保存外部函...

网友评论

      本文标题:闭包知识点总结

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