JavaScript函数定义
JavaScript 函数定义
使用关键字 function 定义函数。
函数声明定义:
function 函数名(参数){
代码块
}
函数声明后不会立即执行,会在我们需要的时候调用到
函数表达式定义:
函数可以储存在变量中 (函数是一个匿名函数,储存在变量中,不需要函数名,通过变量名调用)
var 变量名 = function ( 参数,参数){
代码块
}
函数表达式存储在变量后,变量也可以作为函数使用:
var 变量名x = function (参数,参数){return a* b};
var z =x(4*3) ;
以分号结尾,因为是一个执行语句。
通过内置的 JavaScript 函数构造器(Function())定义。
Function() 构造函数
var a = new Function()(“a”,“b” “return a*b”);
var x = a (4,3);
在JavaScript中避免使用new关键字
不用构造函数,上例可以写成:
var a = function (a,b){ return a*b}
var x = a (4,3);
函数提升:
提升(Hoisting)应用在变量的声明与函数的声明。变量的声明(注意不包含变量初始化)会被提升(置顶)到声明所在的上下文。但是变量初始化的顺序不变。
因此函数可以在声明之前调用。
但是使用函数表达式定义的无法提升!
Javascript 中函数声明和函数表达式是存在区别的,函数声明在JS解析时进行函数提升,因此在同一个作用域内,不管函数声明在哪里定义,该函数都可以进行调用。
而函数表达式的值是在JS运行时确定,并且在表达式赋值完成后,该函数才能调用。这个微小的区别,可能会导致JS代码出现意想不到的bug。
自调用函数:
函数表达式可以 "自调用"。如果表达式后面紧跟 () ,则会自动调用。不能自调用声明的函数。通过添加括号,来说明它是一个函数表达式: 是匿名自我调用的函数 (没有函数名)。
(function (){函数体})();
函数可作为一个值使用:
function a(){return a*b}
var x = a(3,4);
函数可作为一个表达式使用:
function a(){return a*b}
var x = a(3,4)-1;
函数是对象
在 JavaScript 中使用 typeof 操作符判断函数类型将返回 "function" 。 但JavaScript 函数描述为一个对象更加准确。 JavaScript 函数有 属性 和 方法。
arguments.length 属性返回函数调用过程接收到的参数个数:
function a (d,s){ return arguments.length } document.getElementById("id").innerHTML = myFunction(4, 3);
toString() 方法将函数作为一个字符串返回:
function x (a,b){ return a*b } document.getElementById("id").innerHTML = myFunction(4, 3).toString ();