javascript学习笔记(3):函数与作用域

来源:互联网 发布:主成分分析 实际数据 编辑:程序博客网 时间:2024/06/07 20:26

函数

函数由函数名,参数,函数体和返回值构成,在没有返回值或返回值为void的情况下,javascript将默认返回值为undefined

example:

>function f(){}

>f()

undefined


函数的三种形式:

非方法函数(普通函数):

>f()

直接调用


构造函数:

>new Date()


方法:

>obj.method();

将函数储存为对象的某个属性,然后通过对象调用函数的方法。


函数声明的方法:

普通方式:

function add(x,y){

return x+y;

}

具名函数:

var func=function (x,y){

return x+y;

}

具名函数通过func(x,y);来进行调用

函数构造器:

var add = new Function('x','y','return x+y');


call和apply方法的区别

相同点:

两个方法的作用完全一样:

fun.call(this,arg1,arg2,arg3)==fun.apply(this,arguments)==fun(arg1,arg2,arg3)

函数作用:可以通过设置第一个参数,可以动态地把一个函数加到其他任何对象上面。

call, apply方法区别是,从第二个参数起, call方法参数将依次传递给借用的方法作参数, 而apply直接将这些参数放到一个数组中再传递, 最后借用方法的参数列表是一样的。


注意:

在javascript中,不能传递参数的引用;因此,当我们将一个变量传递给函数时,变量的值会被复制一份并传递给函数,在函数中无法改变变量。

只有将变量包装到一个数组中,才能通过函数改变变量。


作用域

覆盖:

example:

var x="out";

function func(){

var x="in";

console.log(x); //  in

}

console.log(x); // out


在非严格模式不通过var 将一个值赋给一个变量会产生全局变量:

example:

>function fun(){ x=123 }

>fun() 

>x

123


IIFE:

(function(){  //open IIFE

// inside IIFE

}()); // close IIFE

作用:避免全局变量,隐藏全局作用域的变量,创建新的环境,避免共享,保持数据的相对独立。


闭包:函数可以维持其创建时所在的作用域

0 0
原创粉丝点击