本文主要是介绍js积累二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
三,js里的参数(arguments对象)当我们在调用一个函数时,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
进一步说一下arguments对象:它只是与数组类似,并不是Array的实例,访问对象的属性值时可以使用方括号[]。
1,根据传入的参数个数arguments.length我们可以让同一个方法执行不同的任务:
function test() {
if (arguments.length === 1) {
alert("do something");
} else if (arguments.length === 2) {
alert("do something other");
}
}
(function(){
test("one",2);
})();
2,arguments对象有一个属性:callee,该属性是一个指针,指向拥有这个arguments对象的函数,我们先看一个阶乘的例子:
function factorial(num){
if(num < 1){
return 1;
}else{
return num * factorial(num -1)
}
}
为了函数内部的代码不与函数名耦合,可以这样修改:
function factorial(num){
if(num < 1 ){
return 1;
}else{
return num * arguments.callee(num -1);
}
}
不过在严格模式("use strict")下,访问arguments.callee会出现错误
四、对象字面量
先看一个例子:
function displayInfo(args){
var output = "";
if(typeof args.name == "string"){
output += "Name: " + args.name + "\n";
}
if(typeof args.age == "number"){
output += "Age: " + args.age + "\n";
}
alert(output);
}
displayInfo({
name : "Nicholas",
age : 29
});
displayInfo({
name : "Grey"
});
我们在调用displayInfo方法时,传入的参数name,age可能只有一个,可能两个都有。像这样需要向函数传入
大量的可选参数时,使用对象字面量来封装多个可选参数是个很不错的选择,而对于那些必需的参数使用命
名参数传入。
这篇关于js积累二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!