企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 1. 函数参数 ## 1.1 带参函数 ~~~ <script> //带参数的函数 function func(a,b){ console.log(a*b); } func(1,5); //5 //es6函数可以默认参数 function test(a=5,b=6){ console.log(a*b); } test(); //30 test(6); //36 test(6,7); //42 </script> ~~~ ## 1.2 自调函数 ~~~ ( function() { alert(10); }() ) ~~~ ## 1.3 return return 就是函数的一个执行结果,return语句执行后,函数终止执行 ~~~ <script> function a(){ // return 1; //1 console.log("a") return 1; // a 1 } var b = a(); console.log(b); </script> ~~~ ## 1.3 函数的传参 ``` function go(a,b,c){ console.log(a); console.log(b); console.log(c); } /* JS 传不定参,对参数不敏感 */ go(1); // 函数的形参,是保存在函数对象的length属性中 console.log(go.length) ``` ### 1.3.1 基本类型传参 * 只传值 ``` function go(){ console.log(1); } go.value = 1; var see = go; see.index = 3; console.log(see.value) console.log(go.index); ``` ### 1.3.2 引用类型传参 * 引用类型既传值,也传址 ``` 数组是引用类型 var arr = [1,2,3]; var b = arr; b.push(5); var c = arr.concat(8); arr.push(6); console.log(c); //[1,2,3,5,8] console.log(arr); //[1,2,3,5,6] console.log(b) //[1,2,3,5,6] ``` ### 1.3.1 参数的存储 arguments > JS的参数 --> 函数内部有个arguments对象,它用来存放函数传入的参数,是一个类数组对象 ``` function go(a,b,c){ console.log(a); console.log(arguments[0]); console.log(arguments[2]); } go(1,2,3); ``` ### 1.3.2 重载 > 重载:函数根据传入的参数不同动态决定,调用那种方法 js 不支持重载 可以使用arguments 对象去模拟重载 ``` function go(a){ console.log(a); } function go(a,b){ console.log(a,b); } function go(){ if(arguments.length == 1){ console.log(arguments[0]) }else if( arguments.length == 2){ console.log(arguments[0]+arguments[1]) } } ``` # 2 函数的创建方式 ## 2.1函数创建的方式有三种方法 * 直接量的方式 * 变量声明的方式 * 构造函数的方式声明 ``` 方法一 go(); function go(){ console.log("hello world") } ``` ``` 声明函数 方法二(不建议使用) go(); //报错,原因声明提前 var go = function(){ console.log("hello world") } ``` ``` 方法三 构造函数的方式声明(不推荐不使用,了解) var go = new Function("a","console.log(a)"); go(1); ``` ### 2.1.1 构造函数 * new : 1.调用了构造函数 2.实例化了一个对象 ``` <script> /* 构造函数:构造一个对象的函数 es6之前,使用构造函数模拟一个类 */ function Person(name,age){ this.names = name; this.ages = age; } /* js的继承是基于原型的继承 在原型上定义一个方法,那么所有实例化的对象都共享这个方法 */ Person.prototype.sayName = function(){ console.log(this.names); } /* new 1.调用了构造函数 2.实例化了一个对象 */ //this 指向实例化对象 var quan = new Person("全梦妍","3"); console.log(quan.ages); quan.sayName(); </script> ``` #### 2.1.1.1 属性coustructor ``` 构造函数 实例对象有一个coustructor 属性,指向构造函数 var arr = [1,2,3,4] function Person(name,age){ this.name = name; this.age = age; } var cheng = new Person("cheng",18); console.log(cheng instanceof Person); console.log(cheng.coustructor == Person) ```