Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数参数的默认值_Javascript - Fatal编程技术网

Javascript 函数参数的默认值

Javascript 函数参数的默认值,javascript,Javascript,以下是我必须编写的脚本说明: 使用| |运算符为中的第一个和第二个指定默认值 功能。如果未指定一个或两个参数,则为空 字符串应用作默认值 一旦您进行了更改,您应该能够根据需要测试函数 如下: console.log(longest('Alice')); // second is undefined - second defaults to the empty string //Alice console.log(longest()); // both first and second

以下是我必须编写的脚本说明:

使用| |运算符为中的第一个和第二个指定默认值 功能。如果未指定一个或两个参数,则为空 字符串应用作默认值

一旦您进行了更改,您应该能够根据需要测试函数 如下:

console.log(longest('Alice'));   // second is undefined - second defaults to the empty string
//Alice

console.log(longest());    // both first and second are undefined - both default to the empty string
//(an empty string)

console.log(longest('hi','hello'));
//hello

console.log(longest('hi', 'me'));
//hi

console.log(longest(''));
//(an empty string)
我甚至不知道从哪里开始。有人能给我点启示吗

默认值

first = first || '';
或,但要求中未定义

first = (typeof first !== 'undefined') ? first : '';
将此应用于两个参数

尝试以下操作:

function longest(first, second) {
        var firstDefault = '';
        var secondDefault = '';
        first = typeof first !== 'undefined' ? first : firstDefault;
        second = typeof second !== 'undefined' ? second : secondDefault;
        if (first.length >=  second.length) {
            return first;
        } else {
            return second;
        }
    }
问题在于

 function longest(first, second) {
    if (first.length >=  second.length) {
        return first;
    } else {
        return second;
    }
  }
如果您将其称为最长的“Alice”,则它会抛出一个错误:

TypeError:无法读取未定义的属性“length”

因为第二个是未定义的,并且未定义的属性(如.length)无法读取

未定义实际上是Javascript中的一个问题,而不是像许多其他语言一样的自动错误。我们很快就会回来的

目的是让您思考如何修复函数。如果函数分配了一个空白字符串代替未定义的字符串,则空白字符串的长度为0,可以读取。p> 在Javascript中,| |运算符可用于为缺少的变量指定默认值,如下所示:

 function longest(first, second) {
    var defaultValue = ''; 
    var first = first || defaultValue; 
    var second = second || defaultValue;
    if (first.length >=  second.length) {
        return first;
    } else {
        return second;
    }
  }
现在,如果第一个或第二个未定义,它们将在本地替换为defaultValue变量的值,该变量在这里设置为空字符串

空字符串不是未定义的值,它是一个不包含字符的字符串。它有一个长度,这个长度是零。现在,当传递未定义的值时,if语句不会失败

现在最长的“爱丽丝”产生了“爱丽丝”

漏洞 不幸的是,如图所示的作业并没有教会您足够的Javascript知识。了解一个特殊的Javascript特性可能是值得的:任何属性,无论它被称为“length”还是其他属性,都可以从没有该属性的现有对象中读取。这可能会导致不期望的行为。结果是一个名为undefined的值,这是Javascript中可以使用的值


如果将undefined与数字进行比较,则结果始终为false。从数学上来说,这通常是不可能的。我们通常认为,如果x>1为假,那么这是面试吗?这些非常基本的操作说明看起来很清楚,到底是什么问题?不,只是针对我所学的课程。还有6分钟就要到期了,我已经被困了一个小时了。哈哈:我不知道如何修改脚本,让它返回一个空字符串。搜索javascript函数默认值。就我个人而言,我会从阅读MDN上的| |操作符开始。看见
 function longest(first, second) {
    var defaultValue = ''; 
    var first = first || defaultValue; 
    var second = second || defaultValue;
    if (first.length >=  second.length) {
        return first;
    } else {
        return second;
    }
  }