函数在return语句之前返回空对象

时间:2016-05-17 01:30:05

标签: javascript

这个函数让我感到困惑,如果我删除给出一个空对象的返回,它就会运行。并且使用return语句,它会忽略它并执行相同的操作。 不知道这里发生了什么,显然没有其他的回复声明。

patch

这是字母数组而不是它的相关性

var score = function(string){
    var sum = 0;
    if(string.length > 0){
        string = string.toLowerCase();
        var array = string.split('');
        for(var i = 0; i < array.length; i++){
            for(var letter in letters){
                if(array[i] === letter) {
                    sum += letters[array[i]];
                }
            }
        }
    }
    return sum;
};

使用茉莉花进行测试。例如

var letters = {
    a : 1, e : 1, i : 1, o : 1, u : 1, l : 1, n : 1, r : 1, s : 1, t : 1, d : 2, g : 2, b : 3, c : 3, m : 3, p : 3, f : 4, h : 4, v : 4, w : 4, y : 4, k : 5, j : 8, x : 8, q : 10, z : 10
}

1 个答案:

答案 0 :(得分:0)

这似乎按原样工作,只有一个简单的未定义检查。 &#39; testz&#39;应警惕14,不是吗?

var letters = {
    a : 1, e : 1, i : 1, o : 1, u : 1, l : 1, n : 1, r : 1, s : 1, t : 1, d : 2, g : 2, b : 3, c : 3, m : 3, p : 3, f : 4, h : 4, v : 4, w : 4, y : 4, k : 5, j : 8, x : 8, q : 10, z : 10
};

var score = function(string){
    var sum = 0;
    if(typeof string !== 'undefined' && string.length > 0){
        string = string.toLowerCase();
        var array = string.split('');
        for(var i = 0; i < array.length; i++){
            for(var letter in letters){
                if(array[i] === letter) {
                    sum += letters[array[i]];
                }
            }
        }
    }
    return sum;
};


alert(score('testz'));

https://jsfiddle.net/c7eq8g46/