一般把script标签内的js代码,放到body结束标签的前面。

函数
function 函数名(参数名){ 要执行的代码 }

//声名函数, 函数只有在调用时才会被执行
function fin(){
    alert("胖胖");
}

//调用函数,这个函数名后的小括号就是调用函数的意思
alert(fin);   //打印整个函数
fin();    //调用函数

//函数的小括号中可以有参数
// 参数可以分为两种:形参 与 实参
function show(str1,str2){    //str1 ,str2就是形参
    alert(str1);      //打印 胖胖
    alert(str2);      //打印 一点也不胖
    alert(str1+str2);
}
show("胖胖","一点也不胖");   //调用时传的参就叫实参

//可以定义一个函数,然后把它做为一个值赋值一个变量;
var fin = function(){
    alert("胖胖");
};
alert(fin);
fin();


//一样可以传参
var fin = function(num1,num2){
   var sum = num1 + num2;
   alert(sum);
};
fin(1,3);
return的使用
//return的第一个作用,可以返回函数的值;
function show(num1,num2){
    var sum = num1+num2;
    return sum;     //在这里把sum给返回出来;
}
alert( show(3,9) );      //函数执行完成之后,这里会得到函数返回的值;
var num = show(3,9);
alert(num);

//return的第二个作用,可以终止函数的执行;
function fin(){
    for(var i = 0; i < 5; i++){
        alert("i的值:"+i);
        break;
    }
    alert("11111");
    return "OK";     //这里执行完return后,下面两句代码不会执行;
    alert("22222");
    alert("33333");
}
fin();
alert(fin());

function fin(){
alert("胖胖");
return undefined;    //函数在最后面都会有一个默认的返回值,这个值就是undefined;
}
alert( fin() );   //这里会打印一个undeinfed;
arguments
//arguments 对象的作用:相当一个容器,传进来的实参都会保存到这个对象中来,没有定义形参时也是一样;
//每一个函数都有这个对象
function show(){
    // alert(arguments);
    alert(arguments.length);
    alert(arguments[0]);
    alert(arguments[1]);
}
show(1,5);
函数的类型
function show(){}

alert(typeof show);   //打印是一个function;
对象
//对象的第一种创建方法,可以通过对象直接量创建;
var obj = {
   "name":"小明",//这里必须是双引号,单引号不行。
   "age":25,
   "sex":"男",
   count:function(){
       var sum = 0;
       for(var i = 0; i < arguments.length; i++){
           sum += arguments[i];
       }
       alert(sum);
   },
   clothing:{
       color:"red",
       width:"100",
       height:"100"
   }
};
alert( obj.age );
alert( obj.name );
alert( obj["name"] );   //获取属性值的第二种方法
alert( obj.count(1,5) );

alert(obj.clothing.color);
alert(obj.color);    //obj这个对象上没有color这个属性,但是访问这个属性时也不会报错。而是返回undefined;


//修改对象的属性值;
obj.age = 21;
alert(obj["age"]);


//添加;
obj.abc = 312;
alert(obj["abc"]);

//删除属性;
delete obj.abc;
alert(obj["abc"]);

函数的分类和函数参数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="Keywords" content="关键字,关键词">
    <meta name="Description" content="描述和简介">
    <title>Title</title>
    <style type="text/css">
        *{margin:0;padding:0;}
        body,ul,li,ol,dl,dd,p,h1,h2,h3,h4,h5,h6{ margin:0;}
        a{text-decoration:none;}
        img{border:none;}
        ol,ul{list-style:none;}
    </style>
</head>
<body>
    <!--
        函数的分类
            1: 是否有名字: 有名函数  匿名函数
            2: 能否直接加括号执行: 函数定义   函数表达式
                1: 函数定义 和 函数表达式的区别
                    函数表达式能在大括号后面分号之前加小括号执行,函数定义这样子做的话是不可以执行的
                    函数表达式加特殊符号可以自执行 + - ~ !
                    函数定义加()处理之后 可以再加括号自执行
        参数:
            1 形参: 形参在小括号当中,命名规则和变量一样(字母 数字 _ $  不能以数字开头)
            2 实参: 函数执行时,真实传入的数据,可以是任意数据类型
            3 参数的个数可以有多个,没有限制,且实参的个数可以比形参的个数多
                x = 10 , y = 1
                2x + 3x + 4y =
            4 参数的个数不确定的时候,可以用不定参来做 arguments
            5 当参数是有名函数时,名字不能四处加括号执行,也不能在形参函数中加括号执行

定义过程包括: 函数的参数
       定义过程中,形参不仅只是定义,还会和实参进行对应赋值
       形参相当于var了一个变量
-->
    <div id="box"></div>
    <script>
        Fn();
        function Fn(){
            alert(1);
        };

        document.onclick = function (){
            alert(2);
        };


        function Fn(){
            alert(1);
        };
        Fn();

        var An = function (){
            alert(2);
        };
        An();


        Fn();
        function Fn(){
            alert(1);
        };

        //函数定义加()处理之后 可以再加括号自执行
        (function Fn(){
            alert(1);
        })();

        //函数表达式能在大括号后面分号之前加小括号执行
        var An = function (){
            alert(2);
        }();

        +function (){
            alert(3);
        }();
        -function (){
            alert(4);
        }();
        ~function (){
            alert(5);
        }();
        !function (){
            alert(6);
        }();


    Fn(2,3,5,6,7,1,1);//实参
    function Fn(a,b,c,d,e){ //形参
        alert(a+b+c+d+e);
    };
    Fn1(function An(){alert(1);});

    function Fn1(x){
        //alert(x);
        x();
    };
    var a = function b(){
        alert(1);
        //b();
    };
    a();

    sum(function (){alert(1);});
    function sum(x){
        x();
    };


    Fn(1,2,3,4);
    function Fn(a,b,c,d){
        alert(a+b+c+d);
    };

    //不定参求和 arguments
        sum(1,3,7,4,1,1,1,1,1,100,120);
        function sum(){
            var x = 0;//定义一个变量接收和
            //console.log(arguments);
            for(var i = 0; i < arguments.length; i++){
                x += arguments[i];
            };
            console.log(x);
        };
    </script>
</body>
</html>