js函数定义和调用

由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量。

var abs = function (x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
};

这种方式下,function (x) { ... }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。

abs()//返回NaN

此时abs(x)函数的参数x将收到undefined,计算结果为NaN

要避免收到undefined,可以对参数进行检查:

function abs(x) {
    if (typeof x !== ‘number‘) {
        throw ‘Not a number‘;
    }
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

arguments

JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array

 
function foo(x) {
    alert(x); // 10
    for (var i=0; i<arguments.length; i++) {
        alert(arguments[i]); // 10, 20, 30
    }
}
foo(10, 20, 30);

利用arguments,你可以获得调用者传入的所有参数。也就是说,即使函数不定义任何参数,还是可以拿到参数的值:

function abs() {
    if (arguments.length === 0) {
        return 0;
    }
    var x = arguments[0];
    return x >= 0 ? x : -x;
}

abs(); // 0
abs(10); // 10
abs(-9); // 9

实际上arguments最常用于判断传入参数的个数。你可能会看到这样的写法:

// foo(a[, b], c)
// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:
function foo(a, b, c) {
    if (arguments.length === 2) {
        // 实际拿到的参数是a和b,c为undefined
        c = b; // 把b赋给c
        b = null; // b变为默认值
    }
    // ...
}

rest参数

ES6标准引入了rest参数

function foo(a, b, ...rest) {
    console.log(‘a = ‘ + a);
    console.log(‘b = ‘ + b);
    console.log(rest);
}

foo(1, 2, 3, 4, 5);
时间: 2024-08-25 10:45:06

js函数定义和调用的相关文章

node.js 函数定义和调用

·函数定义: var a=2; function add(i){ if(i>0){ return 1; }else{ return 2; } } add(a); console.log(add(a)); function  //函数定义 add   //函数名称 (i)   //形参,多个形参可以用 , 隔开 {}   //函数体   可以包含若干语句   也可以没有语句 add(a)    //实参,是将 a 的值付给形参 i    (函数调用) 注:函数内部的语句 ,执行到return时,函

实验八——函数定义及调用总结

实验八--函数定义及调用总结 1.本次课学习到的知识点: (1)void为不反回结果的函数,且void不能省略,否则默认为int,函数体中没有表达式的return语句,也可省略return. (2)不返回结果的函数在定义.调用.参数传递.函数声明上,思路与以前相同,适用于把一些确定的.相对独立的程序功能封装成函数. (3)局部变量:定义在函数的内部,且有效作用范局部变量一般定义在函数或复合语句的开始处,围局限于所在的函数内部,形参是局部变量. (4)不能定义在中间位置. (5)全局变量:定义在函

第9课 - 函数定义及调用

第9课 - 函数定义及调用 1. makefile中的函数 (1)make 解释器提供了一系列的函数供 makefile 调用 (2)在 makefile 中支持自定义函数实现,并调用执行 (3)通过 define 关键字实现自定义函数 2. 在makefile中自定义函数 (1)自定义函数的语法 其中,$(0) 代表被调用的函数名,$(1) , $(2) , $(3) ... 代表调用函数时后面的传参 (2)深入理解自定义函数 - 自定义函数是一个多行变量,无法直接调用 - 自定义函数是一种过

js函数定义 参数只要写名称就可以了

js函数定义  参数只要写名称就可以了 以下为标准: function add(type)  { } 不要写成下面这个样子 function add(var type)  { } 哎 妹的  老何java混淆

函数 定义与调用

为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起来写一下. s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) 好了,功能实现了,非常完美.然后现在又有了一个需

函数定义及调用(八)

在 makefile 中是支持函数的概念的,make 解释器提供了一系列的函数供 makefile 调用.在 makefile 中支持自定义函数实现,并调用执行:提供 define 关键字实现自定义函数.下面是自定义函数的语法 我们再来深入地看看自定义函数,自定义函数是一个多行变量,无法直接调用:其次自定义函数是一种过程调用,没有任何的返回值:自定义函数用于定义命令集合,并应用规则中.下来我们还是以代码为例来进行说明 .PHONY : test define func1     @echo "M

make--变量 条件判断 函数定义及调用

一.变量的高级主题 A.变量值的替换1.使用指定字符(串)替换变量中的后缀字符(串)2.语法格式:$(var:a=b) (将a替换成b)a.替换表达式中不能有任何的空格b.make中支持使用${}对变量进行取值示例 src:=a.cc b.cc c.cc obj:=$(src:cc=o) test: @echo "obj=>$(obj)" 输出结果由上图可以看出变量值的替换B.变量的模式替换1.使用%保留变量值中的指定字符,替换其它字符2.语法格式:$(var:a%b=x%y)a

python 函数定义和调用

一.python 函数的分类: 1.内置函数 2.标准库函数 3.第三方函数 4.用户自定义函数 函数定义和调用 在使用函数之前必须先定义函数,执行def时,会创建一个函数对象并绑定到函数名变量上,定义函数的语法格式如下: def 函数名(形参列表):    //由零条到多条可执行语句组成的函数    [return [返回值]] 示例: 二.返回值: return 返回值要点: 1.如果函数体中包含return 语句,则结束函数执行并返回值: 2.如果函数体中包含return语句,则返回Non

javascript、jQuery函数定义和调用方法

一.javascript 1.var aaa=function(){...} var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用. 2.function aaa(){...} function方式定义函数可以先调用,后声明. 例子: <script language="JavaScript" type="text/javascript"> //aaa();这样调用就会出错 var aaa = function(){ alert(&q