zoukankan      html  css  js  c++  java
  • Javascript学习笔记-基本概念-函数

    ECMAScript 中的函数使用function 关键字来声明,后跟一组参数以及函数体。函数的基本语法如下所示:

    function functionName(arg0, arg1,...,argN) {
        statements
    }

     函数示例:

    function sayHi(name, message) {
        alert("Hello " + name + "," + message);
    }

    调用sayHi()函数的代码如下所示:

    sayHi("Nicholas", "how are you today?");

    ECMAScript 中的函数在定义时不必指定是否返回值。

    function sum(num1, num2) {
        return num1 + num2;
    }

     调用这个函数的示例代码如下:

    var result = sum(5, 10);

     这个函数会在执行完return 语句之后停止并立即退出。

    1、理解参数

    ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。

    ECMAScript 中的参数在内部是用一个数组来表示的。

    函数也可以像下面这样重写,即不显式地使用命名参数:

    function sayHi() {
        alert("Hello " + arguments[0] + "," + arguments[1]);
    }

     命名的参数只提供便利,但不是必需的。

    通过访问arguments 对象的length 属性可以获知有多少个参数传递给了函数。下面这个函数会在每次被调用时,输出传入其中的参数个数:

    function howManyArgs() {
        alert(arguments.length);
    }
    howManyArgs("string", 45);  //2
    howManyArgs();         //0
    howManyArgs(12);        //1

    函数能够接收任意个参数并分别实现适当的功能。

    function doAdd() {
        if(arguments.length == 1) {
            alert(arguments[0] + 10);
        } else if (arguments.length == 2) {
            alert(arguments[0] + arguments[1]);
        }
    }
    doAdd(10); //20
    doAdd(30, 20); //50

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

    function doAdd(num1, num2) {
        if(arguments.length == 1) {
            alert(num1 + 10);
        } else if (arguments.length == 2) {
            alert(arguments[0] + num2);
        }
    }

    arguments 对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。

    没有传递值的命名参数将自动被赋予undefined 值。

    2、没有重载

    ECMAScript 函数不能像传统意义上那样实现重载。ECMAScirpt函数没有签名,因为其参数是由包含零或多个值的数组来表示的。而没有函数签名,真正的重载是不可能做到的。

    如果在ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。

    function addSomeNumber(num){
        return num + 100;
    }
    
    function addSomeNumber(num) {
        return num + 200;
    }
    
    var result = addSomeNumber(100); //300
  • 相关阅读:
    有return的情况下try catch finally的执行顺序
    for循环和foreach循环效率对比
    SpringBoot_数据访问-整合MyBatis-配置版MyBatis
    作品
    HTML——招生信息网(bootstrap、WOW动画、blueimp-gallery图片展示插件)
    HTML——信息技术基础精品课程
    HTML——校友会(bootstrap)
    毕设——社区志愿者信息管理系统
    HTML笔记——JS下载.json文件
    HTML笔记——bootstrap-select、table、tableExport、layer
  • 原文地址:https://www.cnblogs.com/szwx1314/p/8151459.html
Copyright © 2011-2022 走看看