方法:对象(属性,方法)
函数
注 : 函数和方法本质是一样的,函数在对象里面就叫做方法
定义方式一
绝对值函数
function abs(x) {
if (x>=0){
return x;
}else {
return -x;
}
}
一旦执行到return代表函数结束,返回结果!
如果没有执行return ,函数执行完也会返回结果,返回undefined或NAN
定义方式二
var abs = function(x){
if (x>=0){
return x;
}else {
return -x;
}
}
方式一和方式二等价
abs(20) //20
abs(-20) //20
参数问题:JavaScript可以传递任意个参数,也可以不传递参数
假设不存在参数,如何规避?
let abs = function(x){
if (typeof x!==‘number‘){
throw ‘not a number‘;
}
if (x>=0){
return x;
}else {
return -x;
}
}
多余的参数传进来会不会有问题?
arguments
arguments
是一个js免费赠送的关键词
代表传进来的所有参数,是一个数组
let abs = function(x){
console.log(‘x=‘+x);
for (let i=0;i<=arguments.length;i++){
console.log(arguments[i]);
}
}
// >abs(1,2,3,5)
// x=1
// 1
// 2
// 3
// 5
问题:arguments包含所有的参数,有时我们想用多余的参数进行操作,需要排除已有的参数
rest
以前:
let abs = function(x,y){
console.log(‘x=>‘+x);
console.log(‘y=>‘+y);
for (let i=2;i<=arguments.length;i++){
console.log(arguments[i]);
}
}
ES6新特性,获取除了已经定义的参数外的其他所有参数
let abs = function(x,y,...rest){
console.log(‘x=>‘+x);
console.log(‘y=>‘+y);
console.log(rest);
}
// >abs(1,4,2,34,5,6)
// x=>1
// y=>4
// [object Array]: [2, 34, 5, 6]
rest参数必须写在最后面,并且使用...标识
原文:https://www.cnblogs.com/shenhuagushisu/p/14491279.html