javascript 高级01(函数)

1.JavaScript 函数

1.1 JavaScript 函数定义

函数---完成某一个具体功能的代码块。

JavaScript 使用关键字 function 定义函数J

/*  格式:function functionName(parameters){
             执行代码
         } */

注释:function--声明/定义/创建函数的关键字【标志

      functionName--函数名称【自己定义】

      (parameters)--参数列表,传递参数【参数是引入函数之外的数据进入本函数】

      {}--函数体,包含具体功能的实现代码

函数声明后不会立即执行,会在我们需要的时候调用到

1.2 函数表达式

函数表达式--将函数保存到一个变量中

var res1 = function () { return "hello"; };  //函数是不需要名称的

以上函数 "function(){return "hello";}"是一个匿名函数

alert(res1); //res1保存的结果是函数本身

alert(res1());//访问函数,保存函数的变量就是函数的名称
window.onload=function(){};  //window.属性

function(){}--匿名函数 

函数存储在变量中,不需要函数名称,通常通过变量名来调用

1.3 function() 构造函数

创建函数的方式1:使用关键字 function 定义函数

  function test1() {
              return "hello";
          }
 alert(test1());    //无参数,有返回值的函数
 function test2(name, age) {
            return name + "," + age;
       }
  alert(test2("zhangsan", 23));        //有参数,有返回值的函数

创建函数的方式2: 通过内置的 JavaScript 函数构造器(Function() )定义

 var test1 = new Function("return'hello'");
        alert(test1());    //无参数,有返回值的
 var test2 = new Function("name", "age", "return name+','+age");
 alert(test2("张三", 23));      //有参数,有返回值

实际上,你不必使用构造函数定义函数。

1.4函数提升(Hoisting)

函数提升(Hoisting)--- 先用后定义声明

 var res1 = test3("lisi", 23);
        alert(res1);

function test3(name, age) {
       return name + "," + age;
}

1.5自调用函数---不常用

正常调用函数
         function test3(name, age) {
             return name + "," + age;
         }
         alert(test3("wangwu", 25));
 无参数,无返回值的自调用函数
 (function test3() {
     alert("自调用函数");
})(); 
有参数,自调用函数
 (function test3(name) {
   alert("自调用函数--" + name);
     })("zhangsan"); 
 有参数,有返回值,自调用函数
       var res1 = (function test3(name) {
             alert("自调用函数--" + name);
             return "hello," + name;
         })("zhangsan");
            alert(res1); (打印2次)

  var res1 = (function test3(name) {
             return "hello," + name;
         })("zhangsan");
         alert(res1); (打印1次)

1.6函数是对象

function test3(name) {
            alert("自调用函数--" + name);
        }
alert(typeof test3);  //function

JavaScript 函数可以有 属性 和 方法

arguments.length 属性返回函数调用过程接收到的参数个数.(arguments.length是函数的一个属性)

function myFunction(a, b) {
            return arguments.length;
        }
alert(myFunction(100, 300));
2--函数调用过程接收到的参数个数

toString() 方法将函数作为一个字符串返回(toString()是函数的一个方法)

function myFunction(a, b) {
            return arguments.length;
        }
        alert(myFunction.toString());

2. JavaScript 函数参数

参数是引入函数之外的数据进入本函数进行元素的变量

函数显式参数(Parameters)与隐式参数(Arguments)

2.1显示参数

函数显式参数在函数定义时列出。

 function test1(name, age) {
            return name + "," + age;
        }

 name,age--显式参数

2.2 隐式参数

函数隐式参数在函数调用时传递给函数真正的值

arguments 是JavaScript 中内置对象--是一个数组--保存参数值

 function test2() {
            return arguments[0] + "," + arguments[1];
        }
alert(test2("zhangsan", 23));

2.3 通过值传递参数

 function test3(name, age) {
            return name + "," + age;
        }
    var res1 = test3("lisi", 24);
    alert(res1);
//"lisi", 24--参数的具体值【值传递】

2.4通过对象传递参数

 function test3(name, age) {
            return name + "," + age;
        }
        var canshu1 = "王五";  //类型string
        var canshu2 = 25; //类型number
        var res1 = test3(canshu1, canshu2);
       
        alert(res1);
        //canshu1,canshu2---参数是变量--对象【对象传递】

        alert(canshu1.charAt(0));  //charAt(0)是方法 canshu1变量就是对象
        charAt() 对象方法 返回在指定位置的字符

3.JavaScript 函数调用

JavaScript 函数有 4 种调用方式。

3.1作为一个函数调用

function myFunction1(a, b) {
            return a * b;
        }
        var res1 = myFunction1(10, 12.5);
        alert(res1);

myFunction1函数不属于任何一个对象,myFunction1函数全局对象,

全局对象属于当前html网页--浏览器窗口--window对象

myFunction1函数是window对象的函数

var res1=window.myFunction1(10,12.5);
   alert(res1);

this--当前对象

function myFunction1(a, b) {
            return a * b;
        }
var res1=this.myFunction1(10,12.5);
alert(res1);
var stu = {
            name: "zhangsan",
            testname: function () {
                alert(this.name);
            }
        }
        stu.testname();  //调取对象中的方法

3.2函数作为方法调用

var myobj = {
            name: "zhangsan",
            age: 23,
            test1: function () {
                return this.name + "-" + this.age;
            }
        }
        var res1 = myobj.test1();   //调取对象中的方法
        alert(res1);

3.3使用构造函数调用函数

   function myFunction(a, b) {
            this.name = a;
            return a * b;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值