JavaScript——函数定义和参数获取
函数的定义
函数就是包裹在花括号中的代码块,前面使用了关键词 function
函数声明后不会立即执行,会在我们需要的时候调用到。
定义方式一:
function functionname(){
// 执行代码
}
测试:绝对值函数
function abs(x){
if(x>=0){
return x;
}else{
return -x;
}
}
//通过方法名调用函数
一旦执行到return 代表函数结束,返回结果。
如果没有执行return,函数执行完也会返回结果,结果就是Undefined
定义方式二:
JavaScript 函数可以通过一个表达式定义。
函数表达式可以存储在变量(abs)中:
var abs = function(x){
if(x>=0){
return x;
}else{
return -x;
}
}
以上函数实际上是一个 匿名函数 (函数没有名称)。
函数存储在变量中,不需要函数名称,通常通过变量名来调用
参数问题
JavaScript 函数对参数的值没有进行任何的检查
解决参数不存在的问题
var abs = function(x){
//手动抛出异常
if(typeof x!=='number'){
//如果参数的类型不是数字
throw 'Not a Number';
}
if(x>=0){
return x;
}else{
return -x;
}
}
存在多个参数的问题
argumnets对象:arguments 是一个对应于传递给函数的参数的类数组对象
你可以使用arguments
对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。
var abs = function(x){
console.log("x=>"+x)
for(var i=0;i<arguments.length;i++){
console.log(arguments[i]);
}
if(x>=0){
return x;
}else{
return -x;
}
}
拓展
因为arguments包含了所有的参数,调用时只会调用第一个参数,而当我们想要使用其他的参数来进行附加操作时,需要排除已有参数!
方法:
rest(Es6新特性):获取除了已定义参数之外的所有的参数
function test(a,b,...rest){
console.log("a=>"+a);
console.log("b=>"+b);
console.log(rest);
}
注意:rest只能写在最后面,必须要用…定义