为什么我的JavaScript函数不正确?

时间:2017-12-13 21:25:26

标签: javascript

我在JavaScript中遇到这个函数有困难,产生了我需要的结果。我试图找出字符串是否长度相同,这是我到目前为止所做的:

function areSameLength(str1, str2) {
    if (str1 === str2) {
        return true;
    }
    else
        return false;
}

我不确定为什么这不正确。

4 个答案:

答案 0 :(得分:2)

function areSameLength(str1, str2) {
    if (str1.length === str2.length) { // you want to compare the lengths, not the strings themselves
        return true;
    }
    else
        return false;
}

更好,更短的版本:

function areSameLength(str1, str2) {
    return str1.length === str2.length;
}

答案 1 :(得分:1)

您正在比较两个字符串以查看它们是否相等,这意味着只有相同的字符串匹配。

使用the length property检查它们的长度是否相同,但不一定是相同的字符:

function areSameLength(str1, str2) {
    return str1.length === str2.length;
}


// Some tests to show it works:
console.log(areSameLength('', '')); // true
console.log(areSameLength('test', 'test')); // true
console.log(areSameLength('testing', 'abcdefg')); // true
console.log(areSameLength('a', 'bcd')); // false

此外,这里不需要if else语句,因为比较返回一个布尔值,你可以简单地返回该值。

答案 2 :(得分:0)

您需要检查字符串的length属性。

  

String对象的The controller for path '/DebugWarmUp' was not found or does not implement IController.属性表示字符串的长度,以UTF-16代码为单位。

length

答案 3 :(得分:0)

你需要使用"string".length所以它会是:

function areSameLength(str1, str2) {
    if (str1.length === str2.length) {
        return true;
    }
    else
        return false;
}

或更简单

function areSameLength(str1, str2) {
    return str1.length === str2.length;
}

但是你可以开始变得更复杂。如果你想在检查之前确保str1或str2是一个字符串:

function areSameLength(str1, str2) {
    if ((typeof str1 == 'string' || str1 instanceof String) && (typeof str2 == 'string' || str2 instanceof String)) {
        return str1.length === str2.length;
    }
    else
        return false;
}

这样做是检查变量的类型和实例以确保它是一个字符串。但它有点难看。所以你可能也想把它变成一个函数。

function isString(str)
{
    return typeof str == 'string' || str instanceof String;
}

function areSameLength(str1, str2)
{
    if (isString(str1) && isString(str2))
    {
        return str1.length === str2.length;
    }
    // return false if anything else
    return false;
}