练习一

定义一个函数,判断一个数字是否是偶数,如果是返回 true,否则返回 false

代码一:

  1. function fun(num){
  2. if(num % 2 == 0){
  3. return true;
  4. }else{
  5. return false;
  6. }
  7. }
  8. 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

  • 函数对象
  • 相当于直接使用函数对象

image.pngimage.png