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;
}
}