javascript学习笔记05

JavaScript的函数

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>js01_hello</title>
    <meta name="author" content="Administrator" />
    <script type="text/javascript">
    //第一种定义方式
    function fn1() {
        alert("fn1");
    }
    //函数就是一个非常特殊的对象,是一个Function类的实例,其实在内存中存储的操作是通过一个键值对来存储的
    alert(typeof fn1);
    
    //由于函数是一个对象,所以可以通过如下方式定义
    //以下是通过函数的拷贝来完成赋值,两个引用并没有指向同一个对象
    var fn2 = fn1;
    fn2();
    fn1 = function() {
        alert("fnn1");
    }
    /**
     * 函数虽然是一个对象,但是却和对象有一些区别,对象是通过引用的指向完成对象的赋值的,而函数却是通过对象的拷贝来完成的
     * 所以fn1虽然变了,并不会影响fn2
     */
    fn2();
    fn1();
    
    /**
     * 对于对象而言,是通过引用的指向来完成赋值的,此时修改o1或者o2会将两个值都完成修改
     */
    var o1 = new Object();
    var o2 = o1;
    o2.name = "Leon";
    alert(o1.name);
    </script>
</head>
<body>
</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>js01_hello</title>
    <meta name="author" content="Administrator" />
    <script type="text/javascript">
    // function sum(num1,num2) {
        // return num1+num2;
    // }
    var sum = function(num1,num2) {
        return num1+num2;
    }
    
    // function sum(num1) {
        // return num1+100;
    // }
    /**
     * 此时sum所指向的空间已经从有两个参数的函数变化到只有num1的函数中
     * 在调用的时候就只会调用只有num1的函数
     * 特别指出:函数的参数和调用没有关系,如果函数只有一个参数,但是却传入
     * 了两个参数,仅仅只会匹配一个
     * 所以在js中函数不存在重载
     */
    var sum = function(num1) {
        return num1+100;
    }
    
    //函数有如下一种定义方式
    /**
     * 如下定义方式等于定义了一个
     * function fn(num1,num2){
     *       alert(num1+num2);
     * }
     * 所以通过以下的例子,充分的说明函数就是一个对象
     */
    var fn = new Function("num1","num2","alert('fun:'+(num1+num2))");
    fn(12,22);
    alert(sum(19));
    
    alert(sum(19,20));
    </script>
</head>
<body>
</body>
</html>

原文地址:https://www.cnblogs.com/canceler/p/4518042.html