0
点赞
收藏
分享

微信扫一扫

JavaScript第四天 变量及闭包函数

Python芸芸 2022-04-17 阅读 79
javascript

JavaScript(变量)的作用域

作用域是可访问变量的集合。
在JavaScript中对象和函数也是变量。
作用域为可访问的变量,对象和函数的集合
-全局作用域:全局变量
1、在函数外定义的变量为全局变量
全局变量有全局作用域:网页中所有的脚本和函数都可以使用
2、变量没有声明,直接赋值的也为全局变量
未声明的变量会自动作为window的属性,window是js中顶级变量(对象)
例:window.alert()➡可直接写为alert()
-局部作用域:局部变量
变量在函数中声明,变量为局部作用域
局部变量:只能在函数内部访问

<!--声明函数-->
function funcx() {
    var x=10000;
    console.log(x);
}
funcx();
<!-- console.log(x);// x is not defined-->
 console.log(x);// x is not defined
function funcy() {
    var y=10000;
   return y;
}
<!--值为10000-->
console.log(funcy());

变量的生命周期:

JavaScript变量的生命周期在它被声明时初始化
局部变量在执行完毕后被销毁
全局变量在页面关闭后销毁
JavaScript的闭包函数
闭包就是能够读取其他函数内部变量的函数。例如在JavaScript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解为“定义在一个函数内部的函数”。在本质上,闭包就是将函数内部和函数外部连接起来的桥梁。

function func1() {
    var x=10000;
    return function() { 
          return x;
    }
}
<!--将func1中返回的方法进行储存 -->
var res=func1();
console.log(res());
console.log(func1()())
//自执行函数
通过window实现闭包函数
function func1() {
         var x=10000;
         function func2() {
             return x;
         }
          return func2;
         window.func3=func2;
     }
     func1();
     console.log(func3());

-链式作用域:子对象可以一级一级的向上寻找父对象的变量,所以父对象中所有变量对子对象是可见的,反之不成立。-
闭包函数的应用

1、可以读取内部函数的变量
function func() {
   var a = 100;
    return (function () {
        return a
    })()
}
var b=func();
<!-- 100-->
console.log(b);
2、可以让一个变量的值始终保存在内存中
    function func2() {
   var c=99;
   fAdd=function(){
       c+=1;// c=c+1
   }
   
return function(){
       return c;
  }
}
var res=func2();
    <!--//99-->
    console.log(res());
    <!--// c+1-->
    fAdd();
    <!--//100-->
    console.log(res());
    fAdd();
    <!--//101-->
    console.log(res());

函数的封装

是一种函数的功能,编写一个或多个功能,通过函数的方式封装起来,对位就可以只提供简单的函数接口(使用方法)。
字面量 不可被改变 重复使用字面量
使用变量将字面量储存起来,直接使用变量
功能函数 方法
将功能封装为函数,对外提供函数的接口(使用方法)
function add(a,b) {
return a+b
}

封装:相同的地方不变 不同的地方通过参数来表示

function func(a, b, type) {
        return eval(a + type + b)
    }
    console.log(func(10, 20, "+"))
    console.log(func(10, 20, "-"))
    console.log(func(10, 20, "*"))
    console.log(func(10, 20, "/"))
举报

相关推荐

JavaScript的第四天

第四天 作业

Rhcsa第四天

第四天笔记

HCIP 第四天

第四天记录

0 条评论