这些是我必须编写的脚本的说明:
function longest(first, second) { if (first.length >= second.length) { return first; } else { return second; }
使用||运算符指定第一个和第二个的默认值 功能。如果未指定一个或两个参数,则为空 string应该用作默认值。
进行更改后,您应该能够将该功能测试为 如下:
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)
我甚至不知道从哪里开始。有人可以为我揭开光明吗?
答案 0 :(得分:0)
默认值
first = first || '';
或者,但是没有在要求中定义
first = (typeof first !== 'undefined') ? first : '';
将此应用于两个参数
答案 1 :(得分:0)
试试这个:
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;
}
}
答案 2 :(得分:0)
的问题
function longest(first, second) {
if (first.length >= second.length) {
return first;
} else {
return second;
}
}
如果您将其称为longest('Alice')
,则会发出错误:
TypeError: Cannot read property 'length' of undefined
因为第二个是undefined
,并且无法读取undefined
的{{1}}属性。
.length
实际上是Javascript中的一个东西,而不是像许多其他语言中的自动错误。我们很快就会回来......
目的是让您考虑如何修复该功能。如果函数分配了一个空字符串来代替undefined,则空字符串的长度为0,可以读取。
在Javascript中,undefined
运算符可用于为缺失的变量分配默认值,如下所示:
||
现在,如果第一个或第二个未定义,它们将在本地替换为 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语句不会失败。
现在''
会产生longest('Alice')
不幸的是,如图所示的分配并没有教你足够的Javascript。可能值得了解一个特殊的Javascript功能:任何属性是否称为“长度”或其他属性都可以从不具有该属性的现有对象中读取。这可能会导致不良行为。结果是一个名为'Alice'
的值,这是一个值可以在Javascript中的值。
将undefined
与数字进行比较时,结果始终为undefined
。数学上通常是不可能的。我们通常认为如果false
为x>1
,则false
必须为x<1
或true
为x
。这种逻辑对1
不起作用。
将undefined
与undefined
进行比较后,结果也为undefined
,除非它是false
的等式测试。
为什么这很重要?它涉及上面true
函数中的错误。数字输入就是一个例子。表示数字的字符串具有长度,但数字没有长度。读取数字的长度会产生未定义的。将undefined与定义的数字进行比较是错误的。这意味着我们可以这样做:
longest()
返回longest(1,100)
正确。
但
100
返回longest(100,1)
OOPS。