Javascript实际传入参数Arguments对象的使用

javascript函数中,标识符arguments具有特别的意义,它是调用对象的一个特殊属性,用来引用Arguments对象。在理解上,可以把Arguments认知为数组,当然,它并不是数组。Javascript函数中,arguments有类似数组的length属性,表示传入的参数的个数。引用一个形式参数可以用参数名,也可以用arguments[i]的形式,其中i表示第几个参数,如果要引用arguments[0]则表示第一个参数。

javascript不会主动为你判断你到底给函数传了多少参数,如果你传多了,那么多余的部分就会被弃用;如果你传少了,那么没有传的参数就是undefined。所以,可以借助arguments.length属性来检测调用函数的时候是否传入了正确的参数个数。

下面是我在利用Ext开发的过程中,写的一个用到了arguments特性的一个工具方法,拿来仅作参考用:

// 给combo增加一个监听事件,当使用BackSpace或Delete键时,可清空field;
// 参数为combo field的id,参数可传递多个,不限制个数
Ext.clearComboListener = function() {
	var length = arguments.length;
	if (length > 0) {
		for (var i = 0; i < length; i++) {
			var comboField = arguments[i];
			Ext.getCmp(comboField).on(
				'specialkey', function(field, e) {
					if (e.getKey() == 8 || e.getKey() == 46) {
						field.clearValue();
						field.value = '';
					}
				}
			);
		}
		Ext.getCmp()
	}
}

值得注意的是,我们在自定义命名变量的时候不要命名为arguments,事实上arguments是javascript的保留字。除此之外,如果你给函数传了一个交param的参数,并且只有这一个参数,那么param和arguments[0]都是对这个参数的引用,改变了其中一个值,即改变了二者所有的者。

本文标题:Javascript实际传入参数Arguments对象的使用

本文链接:http://yedward.net/?id=150

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章