javascript学习(六)函数

1.函数的定义

function 函数名称(argument1,argument2...){
    代码段;
}

js中的函数名称如果重复会发生覆盖,函数通过return 加返回值,如果没有return默认返回undefined。
函数调用:函数名称(),如果有参数就传入参数,如果传递参数超过定义时参数,js会忽略掉多余参数。
变量的作用域:函数体内声明的变量,仅在函数体内可以使用,属于局部变量;函数体外声明的变量,从变量声明开始到脚本结束都可以使用,属于全局变量;但是不用var声明的变量,属于全局变量,函数体外能够访问,所以声明变量尽量用var关键字。

2.函数参数

(1)默认参数

js 中的参数不能有默认值,当然我们可以用其它形式实现,如

<script type="text/javascript">
    function sum(a, b) {
        a = a || 0;
        b = b || 0;
        return a + b;
    }
    alert(sum(10));
</script>

这里只是很简单的实现方式,也可以使用arguments对象实现;

<script type="text/javascript">
    function sum(a, b) {
        a = arguments[0] ? arguments[0]:0;
        b = arguments[1]? arguments[1]:0;
        return a + b;
    }

    alert(sum(10));
</script>

还可以通过arguments.length属性来检测参数个数。

(2)可变参数

我们还可以用arguments实现可变参数,如:

<script type="text/javascript">
    function sum() {
        var sum = 0;
        var paramNum = arguments.length;
        for(var i = 0; i < paramNum; i++) {
            sum += arguments[i];
        }
        return sum;
    }

    alert(sum(10, 34, 454, 656));
</script>

3.全局函数

parseInt(string, radix):解析一个字符串,并返回一个整数。;
parseFloat(string):解析一个字符串,并返回一个浮点数。
isFinite(value):用于检查其参数是否是无穷大,如果是有限数,返回true。否则返回false。
isNaN:检查参数是否是NaN。
encodeURI(uriString):函数可把字符串作为 URI 进行编码,该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) ;该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

decodeURI(uriString): 对 encodeURI() 函数编码过的 URI 进行解码
encodeURIComponent(URIstring):把字符串作为 URI 组件进行编码,该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) ;其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
decodeURIComponent(URIstring):可对 encodeURIComponent() 函数编码的 URI 进行解码。
escape(string):函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串,该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
unescape(string):解码由escape()编码的字符串。
eval(string):可计算某个字符串,并执行其中的的 JavaScript 代码。
Number(object):把对象的值转换为数字。例如:如果参数是 Date 对象,Number() 返回从 1970 年 1 月 1 日至今的毫秒数。
String(object):把对象的值转换为字符串。

4.匿名函数

匿名函数,顾名思义就是没有名字的函数,如:

var sum = function(){
    var sum = 0;
    var paramNum = arguments.length;
    for(var i = 0; i < paramNum; i++) {
        sum += arguments[i];
    }
    return sum;
};

alert(sum(10, 34, 454, 656));

用匿名函数还可以实现回调函数,把函数作为一个参数传递即可。如:

function sum(a, b, logCallback){
   logCallback(a + b);
}
sum(10, 45, function (result) {
    console.log(result);
});

call,apply方法可用于函数调用,调用一个对象的一个方法,以另一个对象替换当前对象。
如:

function add(a,b)  
{  
    alert(a+b);  
}  
function sub(a,b)  
{  
    alert(a-b);  
}  

add.call(sub,3,1);   

两个方法都使用了对象本身作为第一个参数。 两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

function myFunction(a, b) {
    return a * b;
}
myArray = [10,2];
myFunction.apply(myObject, myArray);

5.其它特殊函数

自调用:如下形式:

(function() {
    alert("aaa");
})();

重写函数:如下形式:

function a() {
    alert("aaa");
    a = function () {
        alert("bbb");
    };
}

a();
a();

执行过a函数之后,再次执行,函数体就会发生变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值