javascript 函数

1.定义函数

  • 语句式function test1(){} 静态 优先解析
  • 直接量ecma推荐 var test1 = function(){} 静态 顺序解析
  • function构造方式var test3 = New Fuction(“a”,”b”,”return a+b”); 动态(执行时再解析) 顺序解析 顶级作用域
    var func = fun reutrn 1;覆盖比较

2.函数的参数

function test(a,b,c,d)   test(1,2)可以调用  test.length  //函数的形参个数
//内部用数组去接受实际参数   arguments[0]   只能在内部访问和使用  ==》用于递归操作 argument.callee;调用自己
argument.callee(动态) 与 调用本身的比较

3.this对象

this对象是基于执行环境所绑定的
全局对象中调用函数  和 函数中调用函数  比较
test() <==> windows.test()

4.call apply

每一个函数都包含两个非继承而来的方法
function sum(x,y){return x+y}               
function call1(x,y){return sun.call(this,x,y)}
function apply(x,y){return sun.apply(this,[x,y])} //绑定到函数体  
function showCloor(){reutrn this.color}   showColor.call(window);扩充函数的作用域 对象和方法不需要任何耦合 
function test1(){}  functionObj(){}  test1.call(o,o.x,o.y);临时绑定obj的作用域

5.执行环境,作用域链

每一个执行环境都有一个与之关联的对象,环境中定义的所有变量和函数体都保存在这个对象中  
全局执行环境最外层的执行环境 
每一个函数的执行函数环境 当执行流进一个函数,函数的环境就被压入一个栈  流出就弹出一个栈   产生一个作用域链 
variable(环境,变量) 可以访问上级环境 一层一层的追溯  少用全局变量(最后被追溯)

6.垃圾收集,块级作用域

1.标记回收 2.引用计数(???)
javaScript没有块级作用域  只有作用域 ()表示执行  (function(){})()

7.闭包

指词法表示不必计算的变量的函数。也就是说,该函数能够使用函数范围外定义的变量。
打印出  函数内  函数外的值。
闭包:一个函数 可以访问另一个函数作用域的变量
可以保存上级作用域的临时变量  上级作用域变量被下一级标记
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值