JavaScript函数小结
来源:互联网 发布:python能做成包吗 编辑:程序博客网 时间:2024/05/19 17:27
- 写在前面的话
- 函数的声明
- 关于函数的返回值
- 关于函数参数的一些特殊说明
- 作用域
- 匿名函数
- 匿名函数的自执行技术
- 模拟重载
- 函数的递归调用
- 一些细节例子
- 传递多个参数的时候
- 作用域的问题
- 匿名函数
写在前面的话
- 本文主要总结归纳了JavaScript的函数一些基础知识,JavaScript语法自由,但是会与传统的面向对象语言的一些语法有差异,因此记录本文,以便后续查阅,文中如有错误,请看官留言指正,共同交流,进步,谢谢!
函数的声明
- function 函数名([形式参数]){//函数体}
- 函数声明只是告诉js这个函数存在。
- 函数只有先调用,才会被执行。
- 函数调用:
- 函数名([实际参数])
- 圆括号内根据需要可以声明形参,定义形参的时候只需要参数名,而不要var来声明。形参的个数不固定,根据需要,可以有多个形,也可以一个也没有。(圆括号内的形参有时候我们也称之为形参列表)
关于函数的返回值
- return
- return语句的语法是:return 返回值; 返回值可以省略,表示仅仅结束函数。
- 如果省略return语句或者有return但是没有返回值,这个时候,返回的是undefined
- 1、如果想给调用者返回值,则可以通过return来返回。
- 2、如果一个方法没有显式的使用return,则这个方法默认返回的是undefined。
- 3、只要在函数内部碰到了return,那么这个函数不管还有多少代码,不管循环有多深,不管循环有没有执行完,都会立即结束函数,并返回返回值。
关于函数参数的一些特殊说明:
- 1、如果传递实参的个数小于形参的个数,则后面的不会赋值,默认为undefined。
- 2、传递的实参可以多余形参的个数。
function add(a, b, c){ if(a === undefined){ a = 0;}if(b === undefined){}// a = a === undefined ? 0 : a; a = a || 0; //a为null时是个 }
- 任何的函数都有一个内部的对象arguments,看成一个数组,就存储了我们传入的所有的参数。
作用域
1、全局作用域
- 整个脚本都属于全局作用域
2、函数作用域
函数内部
全局变量:
在函数外部声明的变量就叫全局变量。
局部变量:
- 在函数内部声明的变量,就是局部变量。
- 如果在一个函数的内部声明变量的时候没有使用var,那么这个变量将自动成为全局变量。
- 注意:使用严格模式的时候,不能省略var来声明
function f(){a = 5} alert(a);//输出5
- 总结:
- 1、在函数内部可以访问全局变量
- 2、在函数内部可以访问这个函数内部定义的局部变量
- 3、函数外部不能访问局部变量
- 4、如果在函数内部出现于全局变量重名的变量,则局部变量覆盖全局变量。
- 5、局部变量也会声明提前,提前到这个函数的最顶。
匿名函数
- 没有名字的函数
- 函数名.name 返回的是这个函数的名字
可能只执行一次的时候,就可以考虑用匿名函数。
boolean,number,string这三种,可以认为每次把基本数据类型的值复制一份,传递到方法的内部。
变量的话,可以不加引号,如果不是的话,一般都要加。
匿名函数的自执行技术:
(function(){alert("我是一个匿名函数");})();或:(function(){alert("我是一个匿名函数");}());---------------var max = (function(m, n){return m > n ? m : n})(5, 6);alert(max);
模拟重载
- 1、声明的所有全局函数,都会声明提前。换句话说,我们可以先调用,把函数的声明放在后面也是可以的。
- 2、函数可以重复声明,但是后声明的会自动覆盖前声明的。
- 3、js中就没有重载的存在。
函数的递归调用
- 递归:函数自己调用自己
- 1、递归调用栈会越来越深,占用的内存越来越多。
- 使用递归一定要满足两个条件:
- 1、必须要有递归结束的条件
- 2、随着递归的深入,必须能够达到那个结束条件(收敛)
一些细节例子
传递多个参数的时候
function add(a, b, c){ if(a === undefined){ a = 0;}if(b === undefined){}// a = a === undefined ? 0 : a; a = a || 0; //a为null时是个 }
function add () { var sum = 0;// alert(arguments.length); //表示传递的参数的个数 for(var i = 0; i < arguments.length; i++){ sum +=arguments[i]; } return sum; } alert(add(1, 2, 5)); alert(add(1, 2, 5,400));
作用域的问题
var a = 10; function f(){ alert(a); //undefined var a = 5; } f(); //undefined4.如果在函数内部出现与全局变量重名的变量,则局部变量覆盖全局变量。5.局部变量也会声明提前,提前到这个函数的最顶。 a =10; function f() { alert(a); a = 5; } f();//先调用函数,输出10 alert(a);//调用函数的时候,没有var,所以a=5成为全局变量,执行完函数后,alert输出5,严格模式不行 function f() { alert(a); a = 5; } f(); alert(a);//没有输出,直接报f函数里的a没定义
匿名函数
var div = document.getElementsByTagName("div")[0]; div.onmouseover = function() { div.style.backgroundColor = "blue"; } div.onmouseout = function() { div.style["background-color"] = "pink"; }
0 0
- JavaScript函数学习小结
- javascript匿名函数小结
- JavaScript函数小结
- JavaScript函数小结
- JavaScript中的函数小结
- 【javascript方法函数小结】
- javaScript中parseInt函数小结
- javascript 逗号() 函数调用小结
- Javascript的eval函数小结
- 【小结】JavaScript函数定义的一些注意事项
- javascript基本知识小结--命名空间,函数
- JavaScript小结(二)-----Date()函数
- javascript小结
- javascript小结
- javascript小结
- javascript小结
- JavaScript小结
- Javascript小结
- 计算机牛人的博客链接
- FFmepg 多线程解码历程
- 常见对象_System类中垃圾回收的方法gc()的应用
- I/O多路转接
- UVA 12124 Assemble (二分 + 字典树)
- JavaScript函数小结
- 配置java环境变量和maven环境变量
- Hadoop报错
- select函数的使用
- c++设计模式之工厂方法模式
- iOS 封装WKWebView页面带加载进度条
- 统计图分析(源自Echars图形)——饼图
- C#中如何加载dll并调用其函数
- BIJI