理顺 JavaScript (17) - 函数
2021/4/29 22:25:27
本文主要是介绍理顺 JavaScript (17) - 函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
理顺 JavaScript (17) - 函数
函数的名称
function fun() { alert(123); } fun(); //123 f = function() { alert(123); } f(); //123 msg = alert; msg(123); //123
函数的返回值
function fun() { var num = 1; return num; //函数可以没有 return; 如果有 之后的代码不会被执行 num++; return num; } var r = fun(); alert(r); //1
函数的既定参数和实际参数
/* 预定参数的个数 */ function fun(a, b, c, d) { alert(fun.length); /* 预定参数个数 */ alert(arguments.callee.length); /* 也可以这样, arguments.callee 标识当前函数 */ } fun(11, 22); //4 / 4 /* 实际参数的个数、遍历参数 */ function fun(a, b, c, d) { alert(arguments.length); //实际参数个数 for (var i=0; i < arguments.length; i++) { alert(arguments[i]); } } fun(11, 22, 33); //3 / 11 / 22 / 33 /* 不确定参数求和 */ function fun() { var num = 0; for (var i=0; i < arguments.length; i++) { num += arguments[i]; } return num; } alert(fun(11, 22, 33)); //66
this 表示调用函数的对象
aaaaaa//点击会显示: MyDiv
caller 表示调用该函数的函数
function fun1() { return arguments.callee.caller.arguments[0]; //或写作: fun1.caller.arguments[0]; } function fun2() { alert(fun1()); } fun2(11, 22); //11
call、apply
function sum(a, b, c) { alert(a+b+c); } sum(1, 2, 3); //6 sum.call(null, 1, 2, 3); //6 sum.apply(null, [1, 2, 3]); //6 //call 与 apply 都是调用函数的方式, 这里 null 以外的是函数的参数; apply 需要把参数写在数组里; 其目的就是重置第一个参数. //call 与 apply 的第一个参数表示调用该函数的对象, null 表示无调用对象; 譬如: function msg(s) { alert(s + ' ' + this.toString()); } var str = 'ABC'; var num = 123; msg.call(str, 'Hi'); //Hi ABC msg.call(num, 'Hi'); //Hi 123
使用 Function 类创建函数
var fun = new Function('alert(123)'); fun(); //123 var fun = new Function('a,b', 'return a+b'); alert(fun(11, 22)); //33
一个关于闭包的小例子
function fun(x) { return function(y) {return x+y;} } var a,b,c; a = fun(1); b = fun(2); c = fun(3); alert(a(1)); //2 alert(b(2)); //4 alert(c(3)); //6
eval : 这是一个全局函数, 它执行字符串中的 JS 代码并返回结果
var str = '((1 + 2) * 3 - 1) / 4'; alert(eval(str)); //2
这篇关于理顺 JavaScript (17) - 函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?