前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于闭包(壹)

关于闭包(壹)

作者头像
爱学习的前端歌谣
发布2023-10-18 11:11:01
1240
发布2023-10-18 11:11:01
举报
文章被收录于专栏:前端小歌谣

前言

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

环境配置

npm init -y

yarn add vite -D

修改page.json配置端口

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

代码演示

代码语言:javascript
复制
console.log("geyao")
function test() {
    var a = 1;
    var b = 2;
    function test2() {
        console.log(a, b)
    }
    debugger
    test2()
}
 test()

debugger代码

代码演示return

代码语言:javascript
复制
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代码

非闭包

代码语言:javascript
复制
 function test2(){
    console.log("123")
 }
 function test(){
    var a=1;
    return test2()
 }

计算案例

代码语言:javascript
复制
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())

运行结果

节流案例

代码语言:javascript
复制
<input id="textInput">
    <script type="module" src="./indexdemo3.js">
</script>
代码语言:javascript
复制
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
        }
    }
}

运行结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端小歌谣 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档