JS学习day5

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值