JS学习day5

来源:互联网 发布:网络摄像头ip搜索工具 编辑:程序博客网 时间:2024/05/19 13:16

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);
0 0
原创粉丝点击