美文网首页
函数默认值

函数默认值

作者: grain先森 | 来源:发表于2019-08-22 16:58 被阅读0次

面试中可能会问到下面问题

function say(a = 1) {
  console.log(a);
}
say(null);
say(undefined);
say();
say(0);
console.log(say.length); // say.length表示函数形参个数

关于答案,我先卖个关子,相信你看了下面的解析就会被安排的明明白白。

基本用法

  • 1个参数有默认值
// ES6代码
function say(a = 1) {
  console.log(a);
}

// 转为ES5代码
function say() {
  var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
  console.log(a);
} 

看到这里,上面的问题你应该就彻底明白啦。。。你可以很自信的在控制台里面验证一下你的答案啦。但是,别着急,接着往下看👇,你会收获更多。

  • 多个参数第一个有默认值
// ES6代码
function say(a = 1, b, c) {
  console.log(a);
  console.log(b);
  console.log(c);
}

// 转为ES5代码
function say() {
  var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
  var b = arguments.length > 1 ? arguments[1] : undefined;
  var c = arguments.length > 2 ? arguments[2] : undefined;
  console.log(a);
  console.log(b);
  console.log(c);
}

哈哈,是不是跟自己想的不太一样呢?

  • 多个参数第一个无默认值
// ES6代码
function say(a, b = 1, c) {
  console.log(a);
  console.log(b);
  console.log(c);
}

// 转为ES5代码
function say(a) {
  var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
  var c = arguments.length > 2 ? arguments[2] : undefined;
  console.log(a);
  console.log(b);
  console.log(c);
}

还有这样子

// ES6代码
function say(a, b, c = 1) {
  console.log(a);
  console.log(b);
  console.log(c);
}

// 转为ES5代码
function say(a, b) {
  var c = arguments.length > 2 && arguments[1] !== undefined ? arguments[1] : 1;
  console.log(a);
  console.log(b);
  console.log(c);
}

这样子。。。

// ES6代码
function say(a = 1, b, c = 1) {
  console.log(a);
  console.log(b);
  console.log(c);
}

// 转为ES5代码
function say() {
  var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
  var b = arguments.length > 1 ? arguments[1] : undefined;
  var c = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  console.log(a);
  console.log(b);
  console.log(c);
}

还有其他情况就不一一列举啦。

未完待续。。。

其他高级点的用法会在后续补充哦。

写文不易,喜欢的朋友可以点个关注留个赞。

相关文章

  • 1.0 C++远征:函数参数默认值、函数重载、内联函数

    C++远征 [TOC] 一、函数参数默认值 1.函数参数默认值的声明 2.函数参数默认值的定义 3.函数参数默认值...

  • 4.函数的扩展

    函数参数的默认值 解构赋值默认值的使用: 函数的length属性:指定了默认值以后,函数的length属性,将返回...

  • ES6 函数的扩展

    函数参数的默认值 ES6允许为函数的参数设置默认值,即直接写在参数定义的后面 函数参数默认值与解构赋值默认值结合使...

  • C语言和C+的这些区别你知道吗?

    1.带有默认值的函数 在C语言里面没有带默认值的函数,C++支持带默认值的函数。 在给形参默认值的时候,要按照从右...

  • ES6-函数参数的赋值

    函数参数的解构赋值: 函数参数解构赋值的默认值: 函数参数解构赋值的默认值undefined:

  • c++函数特性

    函数重载,参数默认值,内联函数 重载:函数名相同,参数列表不同,作用域相同。 参数默认值:参数默认值必须从最后开始...

  • ES6异步方法

    一、函数的拓展函数传参与默认值ES6函数的默认值:(x = 6)默认值可以写表达式,表达式在函数执行阶段执行 箭头...

  • ES6新特性4:函数的扩展

    1:函数参数的默认值 在ES6之前不能直接为函数设置默认值,只能在函数内单独判断处理。ES6可以为函数设置默认值。...

  • C++函数参数默认值

    函数参数默认值功能是指,当调用函数省略了实参时,函数将使用默认的参数值。 函数参数默认值有两个规定: 参数默认值需...

  • ES6--函数扩展

    函数新增特性 函数默认值,rest参数,扩展运算符,箭头函数,this绑定,尾调用 函数参数的默认值 rest参数...

网友评论

      本文标题:函数默认值

      本文链接:https://www.haomeiwen.com/subject/vtznsctx.html