练习一
定义一个函数,判断一个数字是否是偶数,如果是返回 true,否则返回 false
代码一:
function fun(num){
if(num % 2 == 0){
return true;
}else{
return false;
}
}
var result = fun(3) // false
使用条件判断语句写有点多次一举了,一定不要这么写。
代码二:
function fun(num){
return num % 2 == 0;
}
var result = fun(2) // false
为神么这么写也可以呢?是不是大吃一惊!其实 num %2 == 0; 就可以知道num是不是偶数或奇数了,如果是返回 true,否则返回 false 。而 return 返回的就是表达式执行后的结果
弹幕里发现的牛逼写法
function fun(num){
return Boolean(num%2); // 返回的是一个布尔值
}
var result = fun(3); // false
刚看的时候是不是一头雾水,其实就是将 num % 2 的值转换为 布尔值,并返回。 num % 2 ,进行取余运算,如果 num % 2 == 0,则 0 转换为 布尔值就是 false,否则相反。
练习二
定义一个函数,可以根据半径计算一个圆的面积,并返回计算结果
π≈3.14 公式:半径的平方=半径x半径
function fun(isou){
return 3.14*isou*isou
}
var result = fun(5);
console.log("result = "+result); // 78.5
要求:
创建一个函数,可以在控制台输出一个人的信息
可以输出人的 name age gender address
function fun(name,age,gender,address){
console.log("我是 "+name+"我的年龄是 "+age+"我的性别是 "+gender+"我住在 "+address);
}
fun("孙悟空",18,"男","花果山"); // 我是 孙悟空我的年龄是 18我的性别是 男我住在 花果山
传入的参数如果太多,就会导致难以阅读,不方便。
当参数过多时,可以将参数封装到一个对象中,然后通过对象传递给参数
var obj = {
name:"孙悟空",
age:18,
gender:"男",
address:"花果山"
};
function fun(n){
console.log("我是 "+n.name+"我的年龄是 "+n.age+"我的性别是 "+n.gender+"我住在 "+n.address);
}
fun(obj); // 我是 孙悟空我的年龄是 18我的性别是 男我住在 花果山
也可以将一个函数作为参数
var obj = {
name:"孙悟空",
age:18,
gender:"男",
address:"花果山"
};
function fun(n){
console.log("我是 "+n.name+"我的年龄是 "+n.age+"我的性别是 "+n.gender+"我住在 "+n.address);
}
fun(obj); // 我是 孙悟空我的年龄是 18我的性别是 男我住在 花果山
function fun2(a){
a(obj);
}
fun2(fun); // 将 fun 函数作为参数传递给 fun2
可能有点难懂,多看看
将一个匿名函数作为参数传递给函数
function fun(a){
console.log(a);
a();
}
fun(function(){console.log("hello world")});
不急,多看看就懂了。
obj() 和 obj 的区别
obj()
- 调用函数
- 相当于使用的函数的返回值
obj
- 函数对象
- 相当于直接使用函数对象