JavaScript中的函数基础知识
- 手机
- 2025-08-28 12:03:02

JavaScript中的函数基础知识 1.函数声明的三种方式1.1 函数声明语句1.2 函数表达式1.3 new Function 2.函数的返回值3.函数调用的几种方法4.函数参数4.1 函数内部的arguments对象(是个伪数组)4.2 获取形参的个数4.3 函数不存在重载4.4 参数传递(1) 基本数据类型传递(值传递)(2) 引用数据类型传递(引用传递)(3) 总结 5.函数属性 1.函数声明的三种方式 1.1 函数声明语句 function fn(x,y,z){ ... } 1.2 函数表达式 let sum1 =function(){}//匿名函数 let sum2 =()=>{} //箭头函数 let sum3=function sumFn(){}//有名称sumFn,sumFn只能在函数内部用 1.3 new Function
最后一个参数是我们要执行的函数体,语法如下: let funcName= new Function("arg1","arg2","arg3","arg4","arg5",......,"函数体")
let sum=new Function("a","b","return a+b") 2.函数的返回值return后不跟值或者没有return,则默认该函数的返回值为undefined
3.函数调用的几种方法 函数调用方法对象的方法调用方式(打点方式)构造函数调用方式间接调用方式 call、apply、call等方法以上几种调用方法相信大家都清楚。不太了解的参见 blog.csdn.net/fageaaa/article/details/145694249
4.函数参数 4.1 函数内部的arguments对象(是个伪数组) function add(x,y){ console.log(arguments[2])//3 } add(1,2,3); 4.2 获取形参的个数 function add(x,y){ ... } console.log(add.length)//2 4.3 函数不存在重载ps:java中是存在重载的。我们可以举一个例子:
function add(x, y) { console.log(x + y); } function add(x, y, z) { console.log(x + y + z); } //在javascript中这里答应NaN,而不是3。因为在javascript中不存在重载,一旦两个函数名相同 //后一个函数就会覆盖前一个函数,所以z=undefined,相加是非数字类型 add(1, 2); //NaN add(1, 2, 3); //6重载:定义相同的函数名,传入的不同参数;
4.4 参数传递 (1) 基本数据类型传递(值传递)被传递的值会被复制到另外一个局部变量。
function addTen(num) { num += 10; return num; } let count = 20; let result = addTen(count); alert(count); // 20, 没有变化 alert(result); // 30 (2) 引用数据类型传递(引用传递)示例1:
function setName(obj) { obj.name = 'Nicholas'; obj = new Object(); obj.name = 'Greg'; } let person = new Object(); setName(person); //obj的值指向了person //obj.name = 'Nicholas',所以person的值name被改为了Nicholas, //之后obj = new Object(),它自己又开辟了一个新地址 //所以obj.name = 'Greg'该的是obj新地址内name的值而不是person的name值 alert(person.name); // Nicholas示例2:
function fn(obj = { name: "沙和尚" }) { console.log(obj); obj.name = "唐僧"; console.log(obj); } //调用fn,obj开辟一块新地址 fn(); //沙和尚 唐僧 //调用fn,obj依然开辟一块新地址 fn(); //沙和尚 唐僧示例3:
let obj = { name: "沙和尚" }; function fn(a = obj) { console.log(a); obj.name = "唐僧"; console.log(a); } //调用fn,将obj的地址传递给a(a指向obj) fn(); //沙和尚 唐僧 //调用fn,将obj的地址传递给a(a指向obj) //但这时候obj的name已经被改为了唐僧 fn(); //唐僧 唐僧示例4:
//这个与3类似 let obj = { name: "沙和尚" }; function fn(a) { console.log(a); obj.name = "唐僧"; console.log(a); } fn(obj); //沙和尚 唐僧 fn(obj); //唐僧 唐僧 (3) 总结 值传递: 将number, string, boolean, undefined, null, 和 symbol这些类型的变量作为参数传递给函数时,函数内部接收的是这些值的副本。引用传递: 将对象(Object)、数组(Array)和函数(Function)等复合类型的变量作为参数传递给函数时,函数内部接收的这些对象在内存中的地址的副本,而不是对象的实际内容。因此,对参数所做的任何修改都会影响原始对象。 5.函数属性 function fn(a, b) { //形参的个数 console.log(arguments.length); //3 //实参的个数 console.log(fn.length); //2 console.log(fn.name); //fn } fn(1, 2, 3); console.dir(fn);打印的fn结果如下:
JavaScript中的函数基础知识由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“JavaScript中的函数基础知识”