zoukankan      html  css  js  c++  java
  • web Function函数

     javascript中函数定义

    js中函数一般定义如下:

    function functionName(arg0,arg1,arg2,...,argN) {

    statements;
    }
    其中functionName是函数名,arg0,…argsN是参数,没有具体类型,可以接受任何类型的参数,例如Boolean,Number,String,Object等。function可以有返回值(返回值可以返回任何类型),也可以没有返回值

    来看一个function示例:

    function printHello(message) {
    alert(message);
    }

    printHello("helloworld");
    将会弹出 helloworld

    带返回值的函数

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

    alert(sum(2,6));
    输出8
    这样来看,其实和java中也差别不大,但是关键的是在js中也允许这样的代码存在

    alert(sum(2,6));
    var res = sum(1);
    alert(sum(1,2,3));
    var res2 = sum;
    alert(sum());
    这样一来,和java中相差就很大了。可以看到我们 定义函数是两个参数,但是调用却可以是0个,1个,甚至3个参数。并且函数名还可以赋值给其他变量。这是怎么回事呢?下面讲解。

    3 javascript中function注意事项
    1 javascript中function的本质

    javascript中函数本质上是一个对象,每个函数都是Function的实例,都与其他对象一样有属性和方法。由于函数是对象,因此函数名实际上是指向函数的一个指针,函数名不会与具体的某个函数绑定。

    理解以上概念对我们理解javascript中函数非常有用,这些解释了以下代码为什么会执行结果相同

    var res2 = sum;
    res2(1,2);
    sum(1,2)
    以上代码结果均是3

     javascript中函数与java的异同

    个人觉得javascript中函数与java中的主要区别如下:

    js中函数是一个对象,函数名是一个指针。java中函数是对象的一个方法,依附于对象,不能独立存在。
    java中就不说了,很好理解。js中刚刚已经介绍过了,为了理解js中函数是一个对象,我们可以这样定义sum函数:

    var sum = new Function("num1","num2","return num1 + num2");

    var sum1 = function (num1,num2) {
    return num1 + num2;
    };

    alert(sum(1,3));
    alert(sum1(1,3)) ;
    以上两个结果均输出4,可以看到,js中函数确实是一个对象。函数名仅仅是一个指向该函数的指针。

    js中函数没有重载,参数没有类型校验,调用可传递0到N个参数
    js中函数是一个对象,函数名是一个指针,因此对象没法重载,定义多个相同名字的函数等于将该对象指向多个函数,最终肯定会以最后的定义为准。

    function print() {
    return "print1";
    }

    function print(message) {
    return "print2";
    }

    alert(print());
    alert(print("ppp"));
    结果都是输出print2,可见最终print2函数都是返回print2。
    另外,js中可以把没有返回值的函数赋值给某个结果变量,如下:

    function noReturn() {
    var i = 0;
    }

    var res = noReturn();
    //输出 undefined
    alert(res);
    输出结果是undefined,如果一个函数没有返回值,被赋值时,默认返回undefined

    js中函数内部有两个特殊对象:arguments,this
    我们知道js中函数可以传递0到N个参数,那这是怎么回事呢?原因是js总函数的参数是用一个数组来表示的,这个数组就是arguments数组,不论传递的多少个参数,函数始终接受到的参数都是这个数组。可以用数组的形式来访问函数参数。如下:

    var sum1 = function (num1,num2) {

    //arguments length:2 1 3
    console.log("arguments length:" + arguments.length + " " + arguments[0] + " " + arguments[1]);
    return num1 + num2;
    };

    alert(sum1(1,3));
    当调用时,我们可以看到控制台输出如下结果:
    arguments length:2 1 3

    this对象

    this的行为与java中类似,它引用的是函数执行的环境对象–也可以说是this值(当在网页全局作用域中调用函数时,this对象引用的是window对象)。请参考下面例子。

    window.color = "red";

    //创建一个对象o 指明具有color属性
    var o = {color:"blue"};

    function sayColor() {
    console.log(this.color);
    }

    //red
    sayColor();

    o.saycolor = sayColor;
    //blue
    o.saycolor();
    可以看到,调用sayColor()是,当前this对象是window对象,当把sayColor赋值给o时,后面this对象指代的就是o对象了。

  • 相关阅读:
    练习一
    Oracle删除一个库里面的所有表
    bat脚本中,@echo on与@echo off的使用
    bat命令之执行脚本后不退出窗口
    福清游玩
    MyEclipse快捷键
    过滤器与拦截器
    Anaconda-Jupyter的简单使用
    pycharm简单配置
    4、 vim&shell
  • 原文地址:https://www.cnblogs.com/zl1234/p/9944312.html
Copyright © 2011-2022 走看看