(八)js函数二

1.变量
a)局部变量:在所有函数内部定义的变量,或者在函数内部未使用var声明的变量也属于全局变量.
b)全局变量:在所有函数外部定义的变量.
eg:
1)    
var a = 5,b = 4, c = 6;
    function sum() {
        var c = a + b; 前面有var声明且在函数内部为局部变量。若没有var声明直接为c = a + b;则为全局变量。
        console.log(c);结果为9输出的局部变量c
    }
    sum();
    console.log(c);结果为6.输出的全局变量c=
    
2)    
var a = 5;
    (function () {
        var a = 7;7为局部变量,sum函数搜索不到该变量。
        sum();
    })();
    function sum() {
        console.log(a + 4);只能搜索到全局变量5。输出结果为9.
    }
 
2.with扩展
    
with(document){
        write("若如霜寒,断痕兮");
        write("若如霜寒,断痕兮");
        write("若如霜寒,断痕兮");
    }简化了代码冗余类似于封装函数.
 
3.回调函数
eg:比较两个数的大小
    
function reduce(a,b,sort,sort2){
        var c = a - b;
        if(c < 0){
        sort();
        }else {
            sort2();
        }
    }
    reduce(2,3,function sort(){alert("a<b");},function sort2(){alert("a>b");});
 
4.递归函数:调用自身的函数.
eg:   
function print(num) {
        num++;
        if(num < 5) {
            print(num);
        }
        console.log(num);
    }
    print(1);结果为5,4,3,2.
 
5.匿名函数
eg: (function(){})();表达式函数,自动启动的函数.
6.构造函数
 
eg: 
function Person(){
    alert("构造函数");
    }
    var m = new Person();
    console.log(m);
 
注:构造函数主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用。构造函数名称首字母一般都大写。
7.扩展一
    
function dog(){};
    dog.play =  function (){
          doing = prompt("王八在不在?");
          if(doing == "不在"){
              alert("再说一遍 ");
              return dog.play();
          }else if(doing == ""){
              alert("听话");
              return dog.play();
          }else if(doing == "在"){
              alert("嗯,乖");
          }
          else{
              alert("狗子你变了");
          return dog.play();
          }
        alert("我们还是好朋友.");
       }
    dog.play();

  

 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/bgwhite/p/9375574.html