⑴ javascript 函数的参数 是局部变量吗
函数的参数是在函数内部可用的,是局部变量
但如果参数是个数组或对象(引用类型),则函数内部是可以影响到外部传参之前的变量的值
JavaScript函数传参传递的仍然是值传递,而不是引用传递
⑵ javascript怎么定义函数
1:调用关键字function来构造
functiondistance(x1,x2,y1,y2)
{
vardx=x2-x1;
vardy=y2-y1;
returnMath.sqrt(dx*dx+dy*dy);
}
2:使用Function()构造函数(请注意与上面的大小写)
1
varf=newFunction*"x","y","returnx*y");
这行代码创建了一个新函数,该函数和你所熟悉的语法定义的函数基本上时等价的:
1
2
3
4
functionf(x,y)
{
returnx*y;
}
Functino()构造函数可以接受任意多个字符串参数。它的最后一个参数时函数的主体,其中可以包含任何JavaScript语句,语句之间用分号分隔。其他的参数都是用来说明函数要定义的形式参数名的字符串。如果你定义的函数没有参数,那么可以只需给构造函数传递一个字符串(即函数的主体)即可。
注意,传递给构造函数Function()的参数中没有一个用于说明它要创建的函数名。用Function()构造函数创建的未命名函数有时被成为“匿名函数”。
你可能非常想知道Function()构造函数的用途是什么。为什么不能只用function语句来定义所有的函数呢?原因是Function()构造函数允许我们动态地建立和编译一个函数,它不会将我们限制在function语句预编译的函数体中。这样做带来的负面影响效应就是每次调用一个函数时,Function()构造函数都要对它进行编译。因此,在循环体中或者在经常使用的函数中,我们不应该频繁地调用这个构造函数。
使用Function()构造函数的另一个原因是它能够将函数定义为JavaScript表达式的一部分,而不是将其定义一个语句,这种情况下使用它就显得比较的方面,甚至可以说精致。
3:函数直接量
函数直接量是一个表达式,它可以定义匿名函数。函数直接量的语法和function语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名。下面的三行代码分别使用function()语句、Funciont()构造函数和函数直接量定义了三个基本上相同的函数:
1
2
3
functionf(x){returnx*x};
varf=newFunction("x","returnx*x;");
varf=function(x){reurnx*x};
在JavaScript1.1中,可以使用构造函数Function()来定义函数,在JavaScript1.2和其后的版本中,还可以使用函数直接量来构造函数。你应该注意这两种方法之间的重要差别。
首先,构造函数Function()允许在运行时动态地创建和编译JavaScript代码。但是函数直接量却是函数结构的一个静态部分,就像function语句一样。
其次,作为第一个差别的必然结果,每次调用构造函数Function()时都会解析函数体并且创建一个新东汉数对象。如果对构造函数的调用出现在一个循环中,或者出现在一个经常被调用的函数中,这种方法的效率非常低。另一个方面,函数直接量或出现在循环和函数中的嵌套函数不是在每次调用时都被重新编译,而且每当遇到一个函数直接量时也不创建一个新的函数对象。
Function()构造函数和函数之间量之间的第三点差别是,使用构造函数Function()创建的函数不使用词法作用域,相反的,它们总是被当作顶级函数来编译,就像下面代码所说明的那样:
⑶ javascript如何给事件处理函数传递参数
在js中,函数名加括号的时候就会自动执行,简单的加上参数也会自动执行。
也就是说window加载专的时候就执行代码属了,意味着给事件添加这种自定义函数的时候只能执行一次,所以传递参数只能间接执行,解决方案如下:
不直接将函数名赋予给事件,而是将你自定义的函数函数+参数放在事件函数的里面,这样就事件触发你的函数就能重复执行了。
functiona(b){alert(b)};
letb="helloword!";
document.onclik=function(){
a(b);//间接传递参数
}
⑷ JS函数的几种定义方式
JS函数的定义方式比较灵活,它不同于其他的语言,每个函数都是作为一个对象被维护和运行的。先看几种常用的定义方式:function func1([参数]){/*函数体*/}var func2=function([参数]){/*函数体*/};var func3=function func4([参数]){/*函数体*/};var func5=new Function();上述第一种方式是最常用的方式,不用多说。第二种是将一匿名函数赋给一个变量,调用方法:func2([函数]);第三种是将func4赋给变量func3,调用方法:func3([函数]);或func4([函数]);第四种是声明func5为一个对象。再看看它们的区别:function func(){//函数体}//等价于var func=function(){//函数体}但同样是定义函数,在用法上有一定的区别。<script>//这样是正确的func(1);function func(a){alert(a);}</script><script>//这样是错误的,会提示func未定义,主要是在调用func之前没有定义func(1);var func = function(a){alert(a);}//这样是正确的,在调用func之前有定义var func = function(a){alert(a);}func(1);</script>用同样的方法可以去理解第三种定义方式。
⑸ JS函数的参数如何设置
1.php有个很方便的用法是在定义函数时可以直接给参数设默认值,如:<br><br>function simue ($a=1,$b=2){<br> return $a+$b;<br>}<br>echo simue(); //输出3<br>echo simue(10); //输出12<br>echo simue(10,20); //输出30<br><br>但js却不能这么定义,如果写 simue(a=1,b=2){}会提示缺少对象。<br><br>2.js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这个数组中。于是我们的js版支持参数默认值的函数可以通过另外一种变通的方法实现,修改上例:<br><br>function simue (){<br> var a = arguments[0] ? arguments[0] :<br>1;<br> var b = arguments[1] ? arguments[1] :<br>2;<br> return a+b;<br>}<br>alert( simue() ); //输出3<br>alert( simue(10) ); //输出12<br>alert( simue(10,20) ); //输出30
⑹ javascript js 函数调用 参数
oTextArea.onkeydown = handle 的意思是此事件引用了名为handle的函数,如果加(),那么意思就变了版,变成此事件获权取handle函数的返回值,handle函数会在事件未被触发时就被执行。建议你有空了解一下JS方面的书籍,可以长很多见识。