• 6-JS函数(二)


    函数


    函数的实参和形参

    function    temp (a,b){ console.log(a) };  // a , b为两个形参
    var  a1 = 2;
    var b1 = 3;
    temp(a1,b1);     //a1 , b1为两个实参
    
    • 当调用函数的时候传入的实参比函数声明指定的形参个数要少,剩下的形参都将设置为undefined.
    • 在函数体内,我们可以用标识符arguments来访问传入函数的实参值。实参对象是一个类数组对象(拥有一个数值length属性和对应非负整数属性的对象看做一种类型的数组),这样可以通过数字下标来访问。

    函数prototype

    每一个函数都包含一个prototype属性,这个属性是指向一个对象的引用,这个对象称为“原型对象”(prototype object)。每一个函数都包含不同的原型对象。当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性。

    function Counter(){
        this.add=function(a,b){
          console.log(a+" + "+b+" = "+ (a+b));
        };
    };
    
    Function.prototype.minus = function(a,b){
      console.log(a+" - "+b+" = "+(a-b))
    };
    
    Object.prototype.multiply = function(a,b){
      console.log(a+" * "+b+" = "+a*b)
    };
    Counter.prototype.devide = function(a,b){
    console.log(a+" / "+b+" = "+a/b);
    };
    
    function Example(){
    };
    
    var temp = new Counter();
    var temp2 = Counter;
    var temp3 = Object.create(temp);
    
    temp3.add(1,5);
    temp.add(1,3);
    temp2.multiply(1,3);
    temp.devide(3,2);
    console.log("add" in temp);
    console.log("minus" in temp);
    console.log("multiply" in temp);
    console.log("devide" in temp);
    
     1 + 5 = 6
     1 + 3 = 4
     1 * 3 = 3
     3 / 2 = 1.5
     true
     false
     true
     true
    

    函数作用域

    • 1.JS的变量作用域是函数级的。
    • 2.JS编程环境的顶级作用域是window对象下的范围,称为全局作用域,全局作用域中的变量称为全局变量。
    • 3.JS函数内的变量无法在函数外面访问,在函数内却可以访问函数外的变量,函数内的变量称为局部变量。
    • 4.函数可以嵌套,多个函数的层层嵌套构成了多个作用域的层层嵌套,形成了JS的作用域链。
    • 5.JS作用域链的变量访问规则是:如果当前作用域内存在要访问的变量,则使用当前作用域的变量,否则到上一层作用域内寻找,直到全局作用域,如果找不到,则该变量为未声明。

    代码示例

    var a = 1;
    var c = 3;
    function example(a){
       var a = 3;
       b = 2;
       console.log("a="+a);
    }
    example(2);
    
    function example2(c){
        console.log("b="+b+",c="+c);
    }
    example2(4);
    
    function example3(d){
        var d = 4;
        return function example4(){
          console.log("d="+d);
        }
    }
    var temp = example3();
    temp();
    
     a=3 
     b=2,c=4
     d=4
    
  • 相关阅读:
    2021/1/10周总结一
    java基础复习五
    java基础复习四
    构建之法读书笔记三
    javaweb学生教务系统
    java基础复习三
    关于eclipse项目错误的一些小经验总结
    Java基础复习二
    JavaDoc文档
    2017-2018-2 20179216 《网络攻防与实践》 第四周总结
  • 原文地址:https://www.cnblogs.com/fengxuefei/p/6250529.html
Copyright © 2020-2023  润新知