js函数漫谈

因为最先接触java,所以总是习惯性的把js和java比较。与java中完全不同的第一点就是:

js中函数是一个对象。每个都是Function 类型的一个实例。

function test(){

};

alert(test instanceof Function )//true

函数的声明一般有两种方式:

1 函数声明
function test(){

    };
2函数表达式
    var test =function(){

}

通常来说这两种是基本一致的,但有一点需要注意:解析器在解析的时候,会优先读取函数声明,并使其在执行任何代码之前可以访问,至于函数表达式则必须等到执行到所在行的时候也会被解释执行。

比如说这段代码就完全没有问题:

test();

function test(){
    alert('success')
};

而这段则直接报错:uncaught typeerror: test is not a function

test();

var test =function(){
 alert('success');
}

这也是我们在写代码时候需要注意的一个地方。

js的函数没有重载的概念

如果有两个相同名字的函数,哪怕是参数并不相同,后者还是会覆盖前者。

function doSomething(order){
    alert('the order is :'+order);
};


function doSomething(order,somebody){
    alert(somebody+ ' do the order: '+order);
}

doSomething('eat ','you');// you do the order: eat 

doSomething('drink');//undefined do the order: drink

实际的执行结果就是后面的函数完全覆盖了之前的函数。

js的函数参数内部是用数组实现的

js 函数不介意传递的参数个数,也不在乎传递的参数类型。参数内部是用一个数组表示的。
函数体内可以通过arguments对象来访问这个参数数组,从而获取每一个参数。

function test(){
    alert(arguments[0])
}

test(1,2,3,4,5);

这样的代码也是完全可行的,虽然函数声明的时候没有声明参数,但是完全可以通过arguments访问调用时候传递了哪些参数,甚至可以通过传递的参数来变相的实现重载,也就是通过length来判断传递几个。

arguments对象可以与命名参数一起使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值