[: currentTime | date:'mm:ss' :] [: timeLeft | date:'mm:ss' :]

传参

在JS中,没有语言层面的必传参数。

function fun(a, b, c) {
  console.log(1);
}

// 没传参
fun(); // 1 正常执行

但有的时候就是需要必填参数,比如:

function 买买买(钱) {
  // ...
}

这种情况怎么办?

语言层面上没有,我们就只能自己实现一个了

function 买买买(钱) {
  if(钱 === undefined) // 如果没有传入参数
    throw new Error('钱呢?!'); // 报错并停止执行

  // ...
  console.log('爸爸!');
}

买买买(); // Uncaught Error: 钱呢?!
买买买(666); // "爸爸!"

return

返回执行结果。

function 谁最美() {
  return '你';
}

var 美人 = 谁最美();
console.log(美人); // "你"

在函数中一旦return,之后的所有语句都不会执行,因为它已经完成任务了,return就是返回成果用的。

function yo() {
  return 'biu';

  // 以下内容通通不会执行
  console.log('yo');
  console.log('yoo');
  console.log('yooo');
}

yo(); // "biu"

function 想多次返回() {
  return 1; // 停!
  return 2; // 不存在的
  return 3; // 不存在的
}

想多次返回(); // 1

所以以后你会看到很多人这么写判断

function 买买买(钱) {
  // 如果没有钱就直接返回,后面的代码不会执行,否则if里的代码会被跳过,直接发货。
  if(!钱) {
    return '钱呢?!';
  }  

  return '爸爸!';
}

买买买(); // "钱呢?!"
买买买(666); // "爸爸!"

然后,慢慢的你也会这么干,因为省的写else了,谁叫我们懒呢(^・ω・^ )

回调函数

有时候你想在一段函数中插入一段自定义代码,这段代码在不同的情况下可以是不同的:

function 买() {
  console.log('交易成功')
  // 我还想在这一步发货呢
  // 我还想在这一步发短信通知买家已发货呢
}

买(); // "交易成功"

这种情况我们就可以把我们想做的写到一个函数里,交给买()来执行:

function 买(一旦交易成功) {
  console.log('交易成功')

  /*检测是否有回调函数*/
  if(一旦交易成功) {
    /*如果有回调函数就触发它*/
    一旦交易成功();
  }
}

function 发货() {
  console.log('发货');
  console.log('短信通知买家已发货');
}

买(发货); // "交易成功" "发货" "短信通知买家已发货"

这不就相当于在一个函数中插入一段自定义代码吗?

如何动态的获取传参?(并不限制传参的个数)

使用arguments关键词

function 粘合() {
  // 将arguments对象转换为数组
  var arr_args = Array.prototype.slice.call(arguments); // 这句懵逼不要怕,后面弄懂this就清楚了

  // 将转换后的数组用空字符串连接起来
  return arr_args.join('');
}

粘合('Y', 'o', 'oo', 'ooo'); // "Yoooooo"
登录后评论