JavaScript:On The Way...(2)函数
来源:互联网 发布:客观钓鱼岛主权 知乎 编辑:程序博客网 时间:2024/05/16 06:37
学到后面在调用函数时会发现有时候定义了一个函数,但在调用时候直接写了函数名,没加(),有时候调用却又加了(),一直很疑惑。那么在使用一个函数时需不需要加上()呢?
1.函数只要是要调用它进行执行的,都必须加括号。此时,函数实际上等于函数的返回值或者执行效果,当然,有些没有返回值,但已经执行了函数体内的行为,就是说,加括号的,就代表将会执行函数体代码。
2.不加括号的,都是把函数名称作为函数的指针,一个函数的名称就是这个函数的指针,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
函数传参
函数的参数分为形参和实参两种,调用函数的部分是实参,函数定义的部分是形参
1.有参函数
//---函数定义部分function 函数名(参数1,参数2){ //---形式参数 语句;} //---函数调用部分函数名(参数1,参数2) //---实际参数
<script type="text/javascript">function max(x,y){ //var x =2,y = 4; if(x>y){ alert(x); }else{ alert(y); }} max(2,4);</script>
2.带返回值的函数
在函数语句结束时执行,并返回表达式的值作为函数的结果。
执行return后函数会停止执行,并带参数返回函数被调用的地方。
2.1 回调函数
简而言之,模块B中的某个函数b()要完成特定的功能,但是函数b()自己无法实现全部功能,这时候就需要反过头调用模块A中的函数a()来完成。这个a()就是回调函数。
演示1:(调用函数一同完成动作)
function show(){ if(prompt('输入数字1')==1){ //---if语句判断返回哪个函数,然后在下面调用相应的函数 return function (){ alert('输对了');}}else{return function (){alert('输错了');} }}show()();
演示2:(回调模拟异步的过程)
function outer(data,callback) { callback();//--可以理解成访问数据库的过程 console.log('我是主函数 :' + data); }function inner(){ //定义回调函数setTimeout("console.log('我是回调函数')", 2000);//模仿数据库操作}outer(666,inner);
演示3:(自己调用自己(实现循环))
var i = 0,sum = 0; functionfunc(){ i++; if(i<5){ sum +=i; return func(); } return sum;};console.log('回调循环的和为:' + func());
2.2返回boolean值(true/false)
return false 就相当于终止符。
return true 就相当于执行符。
return false的作用一般是用来取消默认动作的。
常用来阻止a链接,form默认submit提交等默认事件行为
<form action="http://www.baidu.com" name='Form' onsubmit="return tijiao()"> <span>用户名</span> <input type="text" placeholder="请输入用户名" name='nicheng'/> <input type="submit" /></form>function tijiao(){ if(Form.nicheng.value==''){ alert('用户名不能为空哦,亲'); return false; } return true;}
3.无参函数
function Fun() {alert('hello world!');}Fun()
4.匿名函数
//---普通函数定义function box() {//函数名是box }//---匿名函数定义//没有函数名(function (){ console.log('这是一个匿名函数'); })//---将匿名函数赋给变量定义var box = function () { return '这是一个匿名函数';};
4 . 1 闭包函数
function test() { var age=100; return function () { return age++; } } var add = test(); add(); add(); //---此时add是这个函数的返回函数 console.log(add); //---输出为:ƒ () {return age++;}, // age的初始化只会持续一次,所以局部变量可以叠加
阅读全文
0 0
- JavaScript:On The Way...(2)函数
- c++ is on the way 2
- clearcase on the way!
- Notes on the Way
- On the way
- on the way
- On the way
- on the way
- On the way
- On the way
- JAVA on the way
- 论文!on the way!
- On the way
- 学习。On the way 。
- Git on the way
- English on the way
- On the way
- Coding On the Way
- 【SSLGZ 2780】2017年10月20日提高T2 收银员(01背包)
- 【bzoj4282】慎二的随机数列
- android 五种存储方式——Http
- 二分答案+队列的运用
- python—DataFrame的存储
- JavaScript:On The Way...(2)函数
- dp-飞扬的小鸟
- ping过程中发生了什么
- eclipse里启动了tomcat正常,但是页面一直报404
- 初始mysql存储过程
- 爬取拉勾网招聘信息并使用xlwt存入Excel
- LeetCode 148. Sort List 单链表排序 Python Solution
- 设计模式系列-工厂模式
- Java多线程之自旋锁与队列锁