初步了解JavaScript函数:
1>:通过关键字创建函数:
1:以函数声明的方式创建函数
function f(x)
{
return x * x;
1>:通过关键字创建函数:
1:以函数声明的方式创建函数
function f(x)
{
return x * x;
}
2:匿名函数创建(以表达式的方式创建函数)。
var f = function(x)
{
return x * x;
var f = function(x)
{
return x * x;
}
document.writeln(f(12));//函数的调用
document.writeln(f(12));//函数的调用
3:当有创建一个递归函数时此时指定函数是名字是非常有必要的(JavaScript 1.5以前的版本是不支持以下
的创建方式)
var f = function fact(x)
{
if(x <= 1)
return 1;
else
return x * fact(x - 1);
}
document.writeln(f(3));
var f = function fact(x)
{
if(x <= 1)
return 1;
else
return x * fact(x - 1);
}
document.writeln(f(3));
4:一比较少见的使用方式(因为它的可读性较差),函数创建完后就立即调用,不推荐这样做。
var f =(function fact(x){
if(x <= 1)
return 1;
else
return x * fact(x - 1);
})(6);
document.writeln(f);
var f =(function fact(x){
if(x <= 1)
return 1;
else
return x * fact(x - 1);
})(6);
document.writeln(f);
5:JavaScript函数是可以嵌套定义的,尽管如此但是嵌套函数一般都不能定义在块(statement/if..elsew/while .......)内,要求定义在函数体内的最高级别。
function hypotenuse(a, b)
{
function square(x)
{
return x * x;
}
return Math.sqrt(square(a) + square(b));
}
function hypotenuse(a, b)
{
function square(x)
{
return x * x;
}
return Math.sqrt(square(a) + square(b));
}
2>:用Function()函数构造器创建函数(不建议使用)
1:Function()函数构造器可以像关键字function()一样完成函数的定义;用函数构造器构造函数最后一个
1:Function()函数构造器可以像关键字function()一样完成函数的定义;用函数构造器构造函数最后一个
参数将是函数体,前面的参数都将是被创建函数的参数。
var f = new Function("x", "y", "return x*y;");
document.writeln(f(12,12));
等效函数:function f(x, y) { return x*y; }
注意:
1:使用Function()构造器构建的函数在每次函数调用是函数都将被创建,如果用它来完成递归函数那效率
1:使用Function()构造器构建的函数在每次函数调用是函数都将被创建,如果用它来完成递归函数那效率
也是非常低的
2:使用Function()构造器构造的函数将是最高层的函数;
如:通过函数构造器创建的函数将访问不到局部变量
var y = "global";
function constructFunction() {
var y = "local";
var f=new Function("return y")
return f(); //这个被构造的函数将访问不到 y = "local"
}
document.writeln(constructFunction());//输出结果将是global
2:使用Function()构造器构造的函数将是最高层的函数;
如:通过函数构造器创建的函数将访问不到局部变量
var y = "global";
function constructFunction() {
var y = "local";
var f=new Function("return y")
return f(); //这个被构造的函数将访问不到 y = "local"
}
document.writeln(constructFunction());//输出结果将是global