如何在Javascript中声明可选的函数参数?[重复]

2020/10/03 02:41 · javascript ·  · 0评论

我可以像这样声明默认参数吗

function myFunc( a, b=0) 
{ 
  // b is my optional parameter 
} 

在javascript中。

使用ES6:这现在是语言的一部分

function myFunc(a, b = 0) {
   // function body
}

请记住,ES6undefined对照真实性检查值,而不是针对真实性检查值(因此,只有未定义的真实值才是默认值-像null这样的虚假值不会默认)。


使用ES5:

function myFunc(a,b) {
  b = b || 0;

  // b will be set either to b or to 0.
}

只要您显式传递的所有值都是真实的,此方法就起作用根据MiniGod的评论,不正确的值是:null, undefined, 0, false, ''

在函数实际启动之前,通常会看到JavaScript库对可选输入进行大量检查。

更新资料

使用ES6,可以完全按照您所描述的方式进行操作。详细说明可在文档中找到

旧答案

JavaScript中的默认参数主要可以通过两种方式实现:

function myfunc(a, b)
{
    // use this if you specifically want to know if b was passed
    if (b === undefined) {
        // b was not passed
    }
    // use this if you know that a truthy value comparison will be enough
    if (b) {
        // b was passed and has truthy value
    } else {
        // b was not passed or has falsy value
    }
    // use this to set b to a default value (using truthy comparison)
    b = b || "default value";
}

表达式b || "default value"计算的值与存在b和返回的值"default value",如果b不存在或者是falsy。

替代声明:

function myfunc(a)
{
    var b;

    // use this to determine whether b was passed or not
    if (arguments.length == 1) {
        // b was not passed
    } else {
        b = arguments[1]; // take second argument
    }
}

arguments函数内部提供了特殊的“数组” 它包含从索引0到的所有参数N - 1(此处N是传递的参数数量)。

通常,它用于支持未知数量的(相同类型的)可选参数。但是,最好指定期望的参数!

进一步的考虑

虽然undefined不可写,因为ES5,一些浏览器被称为不执行此。如果您担心此问题,可以使用两种选择:

b === void 0;
typeof b === 'undefined'; // also works for undeclared variables
本文地址:http://javascript.askforanswer.com/ruhezaijavascriptzhongshengmingkexuandehanshucanshuzhongfu.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!