3.3 函数定义和参数获取
方法:在类里写上,在对象和类名那里调用。
函数:直接写,直接调用。不存在什么类,什么对象。
所以本质上它们是一样的,都是为了完成某个功能而设计的。
- JavaScript 定义函数的格式①:
function abs(x){
if(x >= 0)
{
return x;
}else{
return -x;
}
}
//你会发现 js 定义一个 函数 好 tm 随意,好简单呀。
切记:return 不能换行 再返回值,因为 js 的语法 会自动 给你 return 后面 加 一个 ;(分号)上去,也就是 返回 空了,并不是返回 你想要返回的值。
如果没有返回 return,函数执行完也会返回结果,结果就是 undefined。
- JavaScript 定义函数的格式②:
var abs = function(x){
if(x >= 0)
{
return x;
}else{
return -x;
}
};
这种方式 是 前端的人员 比较喜欢定义的,因为方便它们理解。它们认为 一个东西 有名字,那肯定就是 它们学的变量了。所以 一个函数 应该也被 存在 一个 变量里。
- 调用函数
abs(10); // 10
abs(-10); // -10
JavaScript 的参数是可以任意传的,想传几个参数就传几个。。甚至可以不传。
- 手动抛出异常
只要你想抛出异常,那就直接 写 throw “异常信息”; 就完事了。
function abs(x)
{
if(typeof x !== 'number')
{
throw "这根本不是一个数字!";
}
if(x >= 0)
{
return x;
}else{
return -x;
}
}
-
typeof A (返回 A 的 类型)
类似于 C/C++ 的 typeid(); 函数。 -
arguments (接收传递过来的所有参数形成参数列表)
console.log("x=>"+x);
for(let i of arguments)
{
console.log(i);
}
会发现 我们 真正有效的 参数就是第一个,而其它 参数 即使传递过来了,也没被 形参接收。而是被一个叫做 arguments 的东西 全部 接收了,形成了一个 参数列表。
技巧分享:如果是这样的话,那我们 如果不想用 第一个参数,而只想用 第二个和第三个的话?是不是 还需要 判断 传递过来的参数 是几个?然后 把 传递给第一个参数的值 给第二个,传递给第二个值给第三个。这样是不是就 很麻烦呀!但是没办法,JavaScript就这样。。。
- . . .rest (专门用来接收除了 已定义参数之后的额外参数,形成一个参数列表)
这个不就类似于 java 的可变参数吗?给你反馈一个 参数的数组。
function aaa(x,y,...rest)
{
console.log(rest);
}