ECMAScript function的理解

ECMAScript 函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型
比如函数的形参有两个,但是调用函数传入的参数可以写一个,三个或不写参数(对应undefined)等,解析器都可以正常解析,这是因为
ECMAScript中参数在内部是以一个数组形式来表示,故而不需要关系传入参数的数量和类型
在函数体内通过arguments对象来访问这个参数数组,从而获取传递给函数的参数
修改命名参数值不会改变arguments对应值
可以通过arguments.length来获得传给函数参数的个数,依次,可以来写不同的实现方法
ECMAScript没有重载的概念,重名函数,其后会覆盖前面相同定义的,但是可以通过上一点模仿重载

基本类型 引用类型

引用类型,可以添加属性和方法
基本类型和引用类型值在复制变量值的差异,引用类型是通过指针对象来实现的
参数传递,二者都是通过值传递的
instanceof来检测具体的引用类型

demo代码 写一遍 理解一遍

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js高程学习笔记2 demo</title>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
    <style type="text/css">
    </style>
    <script type="text/javascript">
        function jsFunction(demoNum){
            switch(demoNum){
                case 1: sayHi("Jim"," nice to meet you");break;
                case 2: sayHi();break;
                case 3: sayHi2("Jim"," nice to meet you");break;
                case 4: doAdd(10);break;
                case 5: doAdd(10,2000);break;
            }
        }

        // 有参数的
        function sayHi(name,message){
            alert("hello "+name+message);
        }

        // 通过arguments获取参数
        function sayHi2(){
            alert("hello "+arguments[0]+arguments[1]);
        }

        // 通过arguments.length实现重载的功能
        function doAdd(){
            if(arguments.length == 1){
                alert(arguments[0] + 10);
            }else if(arguments.length == 2){
                // 修改命名参数值不会改变arguments对应值 
                //arguments[1] = 100; 
                alert(arguments[0]+arguments[1]);
            }
        }

        function test(){
            var person = new Object();
            setName(person);
            alert(person.name);
        }

        function setName(obj){
            obj.name = "Nicholas"
            // 引用变量的参数传递 也是值传递
            // obj = new Object();
            // obj.name = "Jim";
        }


    </script>
</head>
<body>
    <div class="content">
       js函数的理解,数值变量,引用变量
    </div>
    <hr/>
    <div class="jsFunction">
        <div>js函数的一些demo</div>
        <input class="demo1" type="button" value="sayHi" onclick="jsFunction(1)">
        <input class="demo2" type="button" value="sayHi2" onclick="jsFunction(2)">
        <input class="demo3" type="button" value="sayHi2" onclick="jsFunction(3)">
        <input class="demo4" type="button" value="doAdd(10)" onclick="jsFunction(4)">
        <input class="demo5" type="button" value="doAdd(10,20)" onclick="jsFunction(5)">
    </div>
    <hr/>
    <div class="dataType">
        <div>数值类型 引用类型</div>
        <input class="demo6" type="button" value="setName" onclick="test()">
    </div>
</body>
</html>

lifesimple
816 声望21 粉丝

好好学习