JS学习day5

    xiaoxiao2021-03-25  90

    call,apply方法的使用

    绑定一些函数,用于传递参数的调用 function sum(x,y){ return x + y; } function call1(num1,num2){ return sum.call(this, num1 , num2); //this指当前这个函数的作用域,传递当前函数的参数num1与num2 } //apply方法与call方法类似,不过apply方法传递的是一个数组 function apply1(num1,num2){ return sum.apply(this,[num1,num2]);//这里是个数组 } 扩充作用域 window.color = 'red'; var obj = {color:'blue'};//对象与方法没有耦合关系 function showColor(){ alert(this.color); } showColor.call(window); showColor.call(obj);

    执行环境与作用域链

    执行环境是js中最重要的一个概念。执行环境定义了变量或有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。

    作用域链是你可以一级一级的访问上一级的作用域的变量和函数,但是你不能从上一层向下来进行访问下一级的作用域的变量

    一层一层的向上来追溯,有顺序的向上去找,全局变量尽量少用

    垃圾收集,块级作用域

    垃圾收集

    标记法 //垃圾收集 标记法 function test(){ var a = 10; //被标记 var b = 20; //被使用 } test(); //执行完毕之后,a与b两个变量又会被标记一次, //状态为没有被使用,则释放ab变量的内存空间 引用计数法(不做介绍)

    块级作用域

    js没有块级作用域的概念 function test(){ for (var i = 1; i<=5;i++){ alert(i); } alert(i); //这个alert还可以执行,并且为6 } test();

    闭包

    //闭包:一个函数 可以访问另外一个 函数作用域中的变量 //封闭性:起到保护变量的作用 //1级作用域 function f(x){ //2作用域 var temp = x; return function(x){ //3作用域 temp += x; alert(temp); } } //如果下级还有函数使用上个变量,就不会进行垃圾回收。 var a = f(50) a(5);
    转载请注明原文地址: https://ju.6miu.com/read-38743.html

    最新回复(0)