函数-1

 1 函数的定义
 2  // 1) 函数声明方式
 3     function sum(a, b) {
 4     console.log(1+3);
 5     }
 6     sum(10, 20);
 7 
 8     // 2) 函数表达式声明方式
 9     var add = function () {
10     console.log(1+3);
11     };
12     add();
13 
14     // 3) 使用Function构造函数
15     var add2 = new Function('console.log(1+3);');
16     add2();

***函数的实参可以大于形参的个数,但是,实参比形参少,存在问题

 1  // 求出多个数的和
 2  function sum(numArr) {
 3     var value = 0;
 4     for(var i=0; i<numArr.length; i++){
 5         value += numArr[i];
 6         }
 7         console.log(value);
 8     }
 9     // var numArr = [10, 20, 30];
10     sum([10, 20, 30, 90, 100]);
11 
12 
13 function sum(num1, num2) {
14     // arguments对象,会把函数传入的值,放到arguments中,伪数组
15     // console.log(arguments);
16     var value = 0;
17     for(var i=0; i<arguments.length; i++){
18         value += arguments[i];
19     }
20     console.log(value);
21     console.log(arguments.length);
22     console.log(sum.length);  
23     if(arguments.length === sum.length){
24         //sum.length传入形参的个数,就是判断形参与实参的个数是否相等
25     }
26     }
27 
28     sum(10, 20, 30, 100, 200, 100, 20);
 1  // 1. 函数直接声明
 2     function sum(num1, num2) {
 3         return num1 + num2;
 4     }
 5 
 6 
 7     console.log(sum(10, 20));
 8     //会将当前的作用域的函数声明作用到整个作用域的最前面  console.log(sum(10, 20));放到函数前面也可以执行
 9 
10 
11 
12     // 2. 函数表达式声明
13 
14     var add = function (num1, num2) {
15         return num1 + num2;
16     };
17     console.log(add(20, 40));
18     //输出调用函数只能在函数声明的下方调用
 1 匿名函数
 2 1、绑定事件
 3 2、定时器
 4 3、自调用函数
 5 document.onclick = function () {
 6         alert("点我干嘛?");
 7     };
 8 
 9 setInterval(function () {
10         console.log(1111);
11     }, 1000)
12 
13 3、自调用函数--闭包
14 (function () {
15         alert("真的会执行吗?");
16    })();
 1 回调函数:如果把函数的指针(地址)当作参数传递给另外一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数;
 2 在一个函数中调用另外一个函数
 3 
 4 function fn(num1, num2, func) {
 5         return func(num1, num2);
 6  }
 7 
 8 //小案例
 9 // 加减乘除函数
10     function add(a, b) {
11         return a + b;
12     }
13 
14     function sub(a, b) {
15         return a - b;
16     }
17 
18     function mul(a, b) {
19         return a * b;
20     }
21 
22     function divide(a, b) {
23         return a/b;
24     }
25 
26     console.log(fn(10, 20, add));
27     console.log(fn(10, 20, sub));
28     console.log(fn(10, 20, mul));
29     console.log(fn(10, 20, divide));
 1 // 求Fibonacci的第n个数
 2     // 1 1 2 3 5 8 13 21...
 3 
 4     function f1(n) {
 5         if(n === 1 || n === 2) return 1;
 6 
 7         return f1(n-1) + f1(n-2);
 8     }
 9 
10     console.log(f1(8));
 1 var name = "张三";//全局
 2     {
 3         var age = 19000;
 4         console.log(name);//可以找到
 5     }
 6     console.log(age);//可以输出
 7 
 8     function test() {
 9         var sex = "男";//局部
10         console.log(name);
11     }
12 
13     test();
14 
15     console.log(sex);//找不到

函数内部可以找到函数外部的变量,只有在函数内部才是局部变量,如果变量用var声明的就是局部变量,没有用var 声明的就是全局变量

function test() {
        sex = "女";
        console.log(name + "局部打印");
    }
    test();

    console.log(sex);
//没有用var 声明的为全局变量
//这里的sex就是全局变量,但不推荐使用
 1 var color = "yellow";
 2     function getColor() {
 3         var anotherColor = "red";
 4 
 5         function swapColor() {
 6             var tmpColor = color; // y
 7             color = anotherColor; // r
 8             anotherColor = tmpColor; // y
 9         }
10         swapColor();
11     }
12 
13     getColor();
14     console.log(color); // red
 var num = 10;
        fun();
        function fun(){
            // 声明提前
             //var num;会把num=20分解,将var num;提前声明,赋值还在下方
            console.log(num);
            var num = 20;
        }

//Undefied
var a = b = c = 9;   a是局部的,b.c是全局的
原文地址:https://www.cnblogs.com/zhangzhengyang/p/11178828.html