定时器、声明提升、函数表达式、闭包

2018-09-13  本文已影响0人  闫梓璇

一、定时器

//一次性定时器
setTimeOut(function(){

     //1秒后执行

},1000)

停止一次性定时器:clearTimeout();

//永久性定时器
setInterval(function(){

      //1秒后执行,并且每隔一秒执行一次

},1000)

停止永久性定时器的方法:clearInterval();

案例:

代码:

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <title>Document</title>
</head>
<body>
        <button class='btn1'>停止一次性定时器</button>
        <button class='btn2'>停止永久性定时器</button>
<script>
    var btn1=document.querySelector('.btn1');
    var timer=setTimeout(function(){
        console.log('hello.js');
    },3000)
    
    btn1.onclick=function(){
        clearTimeout(timer);
    }
    
    var btn2=document.querySelector('.btn2');
    var timers=setInterval(function(){
        console.log('hello world');
    },1000)
    
    btn2.onclick=function(){
        clearInterval(timers);
    }
</script>

</body>
</html>

二、声明提升

代码:

<script>
    fn();
    function fn(){
        console.log('hello world');
    }
    fn();
    
    foo()//报错
    var foo=function(){
        console.log('hello world');
    }
    fo();
</script>

三:函数表达式
函数的声明可以把函数的调用放在任何位置都可以执行

五、闭包

(1)闭包是依赖于函数的,因为函数是js中唯一拥有自身作用域的结构

(2)两个单独的函数,分别都有自己的作用域,并且只能访问自己作用域中的变量,而无法访问其他作用域中的变量

(3)如果想要两个函数访问其他函数作用域中的变量,这时候就需要函数的嵌套。这时候就会形成闭包

(4) 闭包:闭包是指有权访问另一个函数作用域中的变量的函数,当函数嵌套的时候,我们可以叫内部函数为闭包
案例:

(1)js部分

<script>
    function fn1(){
        var a=3;
        console.log(a);  //3
        function fn2(){
            var b=5;
            console.log(a);  //3
            console.log(b);  //5
            return b;
        }
        console.log(fn2());  //5
    }
    fn1();
</script>
上一篇 下一篇

猜你喜欢

热点阅读