js函数参数设置默认值的兼容问题

杨新朋| 阅读:46 发表时间:2018-08-31 17:24:27 前端技术

对函数参数设置默认值,本质就是判断是否传入参数或者参数是否为空。

php有个很方便的用法是在定义函数时可以直接给参数设默认值,如:

<?php

function simue ($a=1,$b=2){

  return $a+$b;

}

echo simue(); //输出3

echo simue(10); //输出12

echo simue(10,20); //输出30

?>

es6 的函数也新提供了一种新的这种添加默认函数的方法:

function multiply(a, b = 1) {

  return a*b;

}

但是,这种方式在大部分浏览器下,如果写function simue(a=1,b=2){}会提示缺少对象。

js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这个数组中。于是我们的js版支持参数默认值的函数可以通过另外一种变通的方法实现,修改上例:

<script>

function simue (){

  var a = arguments[0] ? arguments[0] : 1;

  var b = arguments[1] ? arguments[1] : 2;

  return a+b;

}

alert( simue() ); //输出3

alert( simue(10) ); //输出12

alert( simue(10,20) ); //输出30

或者

function myFunction(x, y) {

    y = y || 0;

}

</script>

本文由杨新朋发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。