关于闭包(壹)

 前言

245ffa5c566975ea66e48b89e48606a9.png

 大家好 我是歌谣 今天给大家带来的是关于闭包的学习 首先 去创建一个新项目

环境配置

4a92d80c9c5c82c440ffa304d20b4895.png

npm init -y

yarn add vite -D

 修改page.json配置端口

4fe2498c65af8eb1ac4412d4feb162b5.png

{
  "name": "demo1",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "vite --port 3002"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "vite": "^4.4.9"
  }
}

 代码演示

e247a578de22aa1b1ffb6746ee229306.png

console.log("geyao")
function test() {
    var a = 1;
    var b = 2;
    function test2() {
        console.log(a, b)
    }
    debugger
    test2()
}
 test()

 debugger代码

84d73b7883f1423091392472f3b57c5b.png

899839c461cac4e7a14a66a9722ac826.png

代码演示return

dd846acb7ef9670f63e7e1e2db302d50.png

console.log("geyao")
function test() {
    var a = 1;
    var b = 2;
    function test2() {
        console.log(a, b)
    }
    
    return test2
}
 const test2=test()
 debugger
 test2()

 debugger代码

4ad8d39a804e71ff7478a74cc6c8b4e0.png

2d6dd5107c3f38e4be378524a1744388.png

 非闭包

d015aaaec72bd159a20997e14a9893d8.png

function test2(){
    console.log("123")
 }
 function test(){
    var a=1;
    return test2()
 }

 计算案例

a57383f10115fb908adfd98476341af2.png

function calculator(initnumber){
    var num=Number(initnumber) || 0
    function changeNumber(value){
        num += value
    }
    function add(value){
        changeNumber(value)
    }
    function minus(value){
        changeNumber(-value)
    }
    function value(){
        return num
    }
    return {
        add,
        minus,
        value
    }
}
const cal=calculator(100)
console.log(cal.value())
cal.add(5)
console.log(cal.value())
cal.minus(50)
console.log(cal.value())

 运行结果

2e892c2187d80453d1a5e6e084c49b0a.png

04702b218d7ccd7f95c9b79e10364638.png

节流案例

e090727c4b9e30489e63adeb8568fba5.png

<input id="textInput">
    <script type="module" src="./indexdemo3.js">
</script>
const oInput=document.getElementById('textInput')
oInput.addEventListener('input',throttle(handler,800),false)




function handler(){
    console.log(this.value)
}
function throttle(handler,delay){
  
    var delay=delay||1000
    var initTime=new Date().getTime();
    return function(args){
        var ctx=this
        var currentTime=new Date().getTime()
        if(currentTime-initTime>=delay){
            handler.call(ctx,args)
            initTime=currentTime
        }
    }
}

 运行结果

f78125dd6b364636dc16893e50089d92.png

0216f97ea3f8110da61a25d0669a636a.png

总结

5d3e6f716ab4fb58a16a9c8616534ac9.png

我是歌谣 最好的种树是十年前 其次是现在

下方查看历史文章

9d6380503a9817515b1389fcbacaff68.png

关于react-admin+postgrest小案例

关于react-redux案例

posted @ 2023-09-06 00:00  前端导师歌谣  阅读(15)  评论(0)    收藏  举报  来源