1 function f1() 2 { 3 console.log("hi1"); 4 } 5 function f2() 6 { 7 console.log("hi2"); 8 } 9 function f3() 10 { 11 console.log("hi3"); 12 } 13 for(i=1;i<=3;i++) 14 { 15 eval("f"+i+"()"); 16 }
结果略。
js支持给参数设置默认值。
例:
function f1(x,y=50) { console.log(x+y); } f1(10,20); f1(10);
结果分别是30和60。
注意,有默认值的参数只能是参数表最后的几个参数。
js支持不确定个数参数。通过在参数前面加“...”,表示该参数可以接受多个值。
例,求一组数字的和:
function f1(...x) { s=0; for(i=0;i<x.length;i++) { s+=x[i]; } return s; } alert(f1(1,2,3,4,5));
弹出15。
js支持用arguments数组获得实际参数。这时候函数可以不带参数。
还是求一组数字的和:
function f1() { s=0; for(i=0;i<arguments.length;i++) { s+=arguments[i]; } return s; } alert(f1(1,2,3,4,5));
结果还是弹出15。
再提一下匿名函数的自调用。
对于只出现一次的函数(通常就是随手写个功能,用完就算了,起名字太麻烦;或者用于事件绑定等特殊情况),可以写成匿名函数。
如已知半径,随手输出一个球的体积:
(function (x) { console.log(4/3*3.14*x*x*x); })(2);
结果略。
如点击页面,弹出窗口:
function f1() { document.body.onclick=function () { alert("hi"); } }
结果略。
js中,函数可以作为其他函数的参数出现。作为参数的函数,叫“回调函数”。
//用逗号做分隔符打印数组x function f1(x) { t=""; for(i=0;i<x.length-1;i++) { t+=x[i]+","; } t+=x[x.length-1]; console.log(t); } //用减号做分隔符打印数组x function f2(x) { t=""; for(i=0;i<x.length-1;i++) { t+=x[i]+"-"; } t+=x[x.length-1]; console.log(t); } //用指定方法x打印数组 function f3(x) { let a=[1,3,5,2,4,6]; x(a); } f3(f1); f3(f2);
运行结果:
匿名函数还有一种简写方式,叫做拉姆达(lambda)表达式 ,在代码中也经常出现。这种写法在主流编程语言里也都有。建议大家自己查资料补一下。
值类型和引用类型。对于数组这样的引用类型,和普通这样的值类型,在函数处理的时候,需要了解一下原理。
例:
function f1(x,y) { t=x; x=y; y=t; } function f2(x,y) { t=x[0]; x[0]=y[0]; y[0]=t; } a=1; b=2; c=[3]; d=[4]; f1(a,b); f2(c,d); console.log(a); console.log(b); console.log(c[0]); console.log(d[0]);
运行结果:
练习:
编写四个函数,分别求两个数的和差积商,并运用。
输入一个数n,返回1+2+3+...+n。
输入两个数m,n(m<n),返回m*(m+1)*...*n。
用数组做方法的参数和返回值。把一组整数反转,输出。
输入数组x和标准y,统计出x中大于y的数所占比例。
编写两个方法,分别输入和输出一维整形数组[形如read_array(5)和write_array(x)]。
关于对象:
简单的js对象与其他主流编程语言中的类对象概念相似。表现出来是键值对。
可以很方便的生成和遍历。常用操作如下:
1 //普通对象 2 //直接书写对象 3 let a1={xm:'zs',nl:20}; 4 //利用object生成对象,类似于用array生成数组。 5 let a2=Object(); 6 a2.xm='ls'; 7 a2['nl']=18; 8 9 //获取对象所有属性 10 let c=Object.keys(a1); 11 //获取对象所有值 12 let d=Object.values(a2); 13 //显示属性和值1 14 for(i=0;i<c.length;i++) 15 { 16 console.log(c[i]); 17 } 18 for(i=0;i<d.length;i++) 19 { 20 console.log(d[i]); 21 } 22 //显示属性和值2 23 //使用for...in遍历对象属性,再利用属性输出值 24 for(i in a1) 25 { 26 console.log(i+'---'+a1[i]); 27 }
运行结果:
代码中第6行和第7行是根据属性取对象值的两种方式,推荐第7行的写法。
另:js的对象也可以包含方法。但受弱类型的限制,这么设计很麻烦,通常也就不用。
例:
1 a = { 2 xm: "zs", 3 nl: 20, 4 showMe:function () { 5 console.log("I'm " +this.xm + "," +this.nl + " years old."); 6 } 7 } 8 a.showMe();
上面的代码是可以工作的。
关于json
json的全称是“javascript对象表示法”。是当下web端与服务器端通讯最常用的一种格式(其实是事实标准)
在js当中,对象和表示这个对象的json字符串,内容极其相似(多数情况下完全相同)。
它们的区别,更多是概念上(也就是字面上),以及由此引起的操作。即:js对象是一个具体的js程序元素,json字符串就是一个字符串。
通常使用“JSON.stringify()”把js对象转化为json串(ify后缀,使...化。stringify即字符串化),在互联网上传播;使用“JSON.parse()”把json字符串转换回对象,在js程序中使用。
例:
1 let a1={xm:'zs',nl:20},a2={xm:'ls',nl:18},a3={xm:'ww',nl:19}; 2 let b=[a1,a2,a3]; 3 c1=JSON.stringify(a1); 4 c2=JSON.stringify(b); 5 d1=JSON.parse(c1); 6 d2=JSON.parse(c2); 7 console.log(a1); 8 console.log(b); 9 console.log(c1); 10 console.log(c2); 11 console.log(d1); 12 console.log(d2);
运行结果:
注:设计json的目的是为了传递数据。如果对象里带有方法,方法并不参与序列化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异