JS函数参数传递方式三种没有名字,怎么传递参数

深入理解JS函数的参数(arguments)的使用
转载 &更新时间:日 15:21:18 & 投稿:jingxian
下面小编就为大家带来一篇深入理解JS函数的参数(arguments)的使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JS函数的参数在function内可以用arguments对象来获取。
参数的调用有两种方式:
1、期望参数的使用。
2、实际传递参数的使用。
应用举例:
function Test(a, b){
var i, s = "Test函数有";
var numargs = arguments. // 获取实际被传递参数的数值。
var expargs = Test. // 获取期望参数的数值,函数定义时的预期参数个数(有a和b 2个参数)。
s += (expargs + "个参数。");
s += "\n\n"
for (i =0 ; i & i++){ // 获取参数内容。
s += " 第" + i + "个参数是:" + arguments[i] + "\n";
return(s); // 返回参数列表。
alert(Test('param1','second param','第三个参数'));
需要注意的是:
arguments是一个object对象,它不是数组,不能对它使用shift、push、join等方法。
上述举例时用的arguments[i]中的i只是作为arguments对象的属性,并不能理解为数组下标。
&script language="javascript"&
function reloadList(){
if(typeof arguments[0] == "function"){
arguments[0].call(this);
arguments[0]();
if(typeof arguments[0] == "string")
alert(arguments[0]);
if(typeof arguments[0] == "number")
alert(arguments[0]);
if(typeof arguments[0] == "undefined")
alert(arguments[0]);
if(typeof arguments[0] == "boolean")
alert(arguments[0]);
if(typeof arguments[0] == "null")
alert(arguments[0]);
reloadList(function(){});
以上这篇深入理解JS函数的参数(arguments)的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具请登录查看
JavaScript 函数参数
JavaScript 函数对参数的值(arguments)没有进行任何的检查。JavaScript 函数参数与大多数其他语言的函数参数的区别在于:它不会关注有多少个参数被传递,不关注传递的参数的数据类型。
函数显式参数与隐藏参数(arguments) 在先前的教程中,我们已经学习了函数的显式参数:
functionName(parameter1, parameter2, parameter3) { &&& code to be executed }
函数显式参数在函数定义时列出。 函数隐藏参数(arguments)在函数调用时传递给函数真正的值。
参数规则 JavaScript 函数定义时参数没有指定数据类型。 JavaScript 函数对隐藏参数(arguments)没有进行检测。 JavaScript 函数对隐藏参数(arguments)的个数没有进行检测。
默认参数 如果函数在调用时缺少参数,参数会默认设置为: undefined
有时这是可以接受的,但是建议最好为参数设置一个默认值:
function myFunction(x, y) { &&& if (y === undefined) { &&&&&&&&& y = 0; &&& }
或者,更简单的方式:
function myFunction(x, y) { &&& y = y || 0; }
如果y已经定义 , y || 0返回 y, 因为 y 是 true, 否则返回 0, 因为 undefined 为 false。
如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名。 只能使用 arguments 对象来调用。
Arguments 对象 JavaScript 函数有个内置的对象 arguments 对象.
argument 对象包含了函数调用的参数数组。 通过这种方式你可以很方便的找到最后一个参数的值:
实例 x&=&findMax(1,&123,&500,&115,&44,&88);function&findMax()&{&&&&var&i,&max = arguments[0];&&&&if(arguments.length & 2){&&&& &&&&} &&& for&(i&=&1;&i&&&arguments.&i++)&{ &&&&&&& if&(arguments[i]&&&max)&{ &&&&&&&&&&& max&=&arguments[i]; &&&&&&& } &&& }&&&&return&}
或者创建一个函数用来统计所有数值的和:
x = sumAll(1, 123, 500, 115, 44, 88); function sumAll() { &&& var i, sum = 0; &&& for (i = 0; i & arguments. i++) { &&&&&&& sum += arguments[i]; &&& } &&& }
通过值传递参数 在函数中调用的参数是函数的参数。 如果函数修改参数的值,将不会修改参数的初始值(在函数外定义)。总结:JavaScript函数传值只是将参数的值传入函数,函数会另外配置内存保存参数值,所以并不会改变原参数的值。实例var x = 1;
// 通过值传递参数
function myFunction(x) {
x++; //修改参数x的值,将不会修改在函数外定义的变量 x
console.log(x);
myFunction(x); // 2
console.log(x); // 1
通过对象传递参数 在JavaScript中,可以引用对象的值。 因此我们在函数内部修改对象的属性就会修改其初始的值。 修改对象属性可作用于函数外部(全局变量)。实例var obj = {x:1};
// 通过对象传递参数
function myFunction(obj) {
obj.x++; //修改参数对象obj.x的值,函数外定义的obj也将会被修改
console.log(obj.x);
myFunction(obj); // 2
console.log(obj.x); // 2提示:你可以在本站的中练习使用JavaScript函数参数!
意见反馈:
联系方式:
广告等垃圾信息
不友善内容
违反法律法规的内容
不宜公开讨论的政治内容Javascript 教程
JavaScript 函数参数
JavaScript 函数对参数的值没有进行任何的检查。
函数显式参数(Parameters)与隐式参数(Arguments)
在先前的教程中,我们已经学习了函数的显式参数:
functionName(parameter1, parameter2, parameter3) {
函数显式参数在函数定义时列出。
函数隐式参数在函数调用时传递给函数真正的值。
JavaScript 函数定义时显式参数没有指定数据类型。
JavaScript 函数对隐式参数没有进行类型检测。
JavaScript 函数对隐式参数的个数没有进行检测。
如果函数在调用时未提供隐式参数,参数会默认设置为:
有时这是可以接受的,但是建议最好为参数设置一个默认值:
function myFunction(x, y) {
if (y === undefined) {
或者,更简单的方式:
function myFunction(x, y) {
y = y || 0;
如果y已经定义 , y || 返回 y, 因为 y 是 true, 否则返回 0, 因为 undefined 为 false。
如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名。
只能使用 arguments 对象来调用。
Arguments 对象
JavaScript 函数有个内置的对象 arguments
argument 对象包含了函数调用的参数数组。
通过这种方式你可以很方便的找到最大的一个参数的值:
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
var i, max = arguments[0];
if(arguments.length & 2) return max;
for (i = 0; i & arguments.length; i++) {
if (arguments[i] & max) {
max = arguments[i];
return max;
或者创建一个函数用来统计所有数值的和:
x = sumAll(1, 123, 500, 115, 44, 88);
function sumAll() {
var i, sum = 0;
for (i = 0; i & arguments.length; i++) {
sum += arguments[i];
return sum;
通过值传递参数
在函数中调用的参数是函数的隐式参数。
JavaScript 隐式参数通过值来传递:函数仅仅只是获取值。
如果函数修改参数的值,不会修改显式参数的初始值(在函数外定义)。
隐式参数的改变在函数外是不可见的。
通过对象传递参数
在JavaScript中,可以引用对象的值。
因此我们在函数内部修改对象的属性就会修改其初始的值。
修改对象属性可作用于函数外部(全局变量)。
修改对象属性在函数外是可见的。
感谢您的支持,我会继续努力的!
扫码打赏,你说多少就多少
记住登录状态
重复输入密码JS实战开发经验!函数多参数传参技巧
HTML5学堂-码匠:掌握Java代码的你,一定编写封装过函数,为了提升函数的控制性,必不可少的就是参数,必选可选的一大堆参数罗列出来,函数调用貌似变得麻烦起来~~~
必选参数指的是必须要传入实参的参数;
可选参数在函数中有默认值,如有传入实参,则取实参的值,如果没有传入实参,则使用默认值。
函数的众多参数问题
当一个函数既有必选参数,又有可选参数,在定义函数时,我们可能采取的方式是:无论参数是可选参数还是必选参数,都将参数罗列下来(通常按照先必选再可选的顺序)
但是这样的罗列方法,会导致一些问题的产生!
举例来说:有一个功能函数h5course,name和domain为其必选参数,而minAPP和book为其可选参数,而我们如此定义函数:
此时,调用函数,需要传入name、domain、book这三个参数,那么,问题来了!
由于在函数定义当中,book的参数位置位于minApp参数之后,在调用函数时,如果希望为book这个参数传入值,就必须按照如下方式进行书写:
h5course('name参数值', 'domain参数值', '','book参数值');
不难发现,当前第三个参数的处理就变得麻烦起来。于是乎,可能很多人会在函数中通过添加if判断,来进行参数控制 ——
此时仍然存在这样两个问题:
第一,函数的调用者必须要了解函数内部的参数判断方式,才能够正确书写“不需要的可选参数”
第二,在调用多个可选参数的函数时,调用代码会变得很麻烦(当然你可以为函数添加注释,降低使用时的难度)
更好的函数参数书写方法!
面对如上的这些问题,下面这种方法,你值得拥有!
1 用对象替代掉原有的单个参数传递方式
2 函数内部使用arguments替换原有的形参
3 利用for-in循环,修改可选参数的默认值
一起来用此方法调整一下h5course函数
在此段代码当中,传入了三个参数
for-in循环当中,为defaultValue添加了name和domain的值,并修改了minApp的内容
函数调用时,参数的处理会变得更方便简单,但是也要注意,为了让使用者清晰了解哪些参数是必须的,建议在函数前面添加合理注释!
来个“智力”测试?
请只考虑水龙头流水较慢的情况
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点js中方法定义的时候没有定义参数,调用的时候可以传参吗?
[问题点数:20分]
本版专家分:0
结帖率 50%
CSDN今日推荐
本版专家分:123
本版专家分:0
本版专家分:396037
2017年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第五
2018年5月 总版技术专家分月排行榜第一2018年4月 总版技术专家分月排行榜第一2018年2月 总版技术专家分月排行榜第一2017年8月 总版技术专家分月排行榜第一
2018年3月 总版技术专家分月排行榜第二2017年11月 总版技术专家分月排行榜第二2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
本版专家分:21593
2013年4月 Web 开发大版内专家分月排行榜第二
2017年12月 Web 开发大版内专家分月排行榜第三2013年3月 Web 开发大版内专家分月排行榜第三
本版专家分:883
本版专家分:8128
2013年5月 Web 开发大版内专家分月排行榜第二
本版专家分:1657
本版专家分:883
本版专家分:71
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐}

我要回帖

更多关于 js函数参数传递方式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信