这个javascript代码有什么问题?回报是错误的

时间:2015-06-09 14:20:00

标签: javascript

var number = prompt('Enter Number (as long as you want): '),
    output = [],
    sNumber = number.toString(),
    lastDigit,
    result,
    i;

function result(number) {
    for (i = 0, len = sNumber.length; i < len; i += 1) {
        output.push(+sNumber.charAt(i));
    }
    lastDigit = output.slice(-1);

    switch (lastDigit[0]) {
        case 0:
            return 'zero';
            break;
        case 1:
            return 'one';
            break;
            .....etc some more cases.......
            default: return 'not a valid number';
            break;
    }
}
jsConsole.writeLine('Last digit in English: ' + result);

为什么结果会以所有代码结束而不是其中一个切换案例?我一直在努力解决这个问题。我只想打开开关盒中的结果。

2 个答案:

答案 0 :(得分:3)

  1. 您实际上并未调用结果函数
  2. 不要将功能和变量命名为
  3. 如果您有number参数,请使用它,不要使用全局变量
  4. 如果您有break
  5. ,则不需要return
  6. prompt将返回一个字符串,因此不需要toString()
  7. 像这样:

    var sNumber = prompt('Enter Number (as long as you want): ');
    
    function result(number) {
        var output = [];
        for (var i = 0; i < number.length; i ++) {
            output.push(+number.charAt(i));
        }
        var lastDigit = output.slice(-1);
    
        switch (lastDigit[0]) {
            case 0:
                return 'zero';
            case 1:
                return 'one';
            default: 
                return 'not a valid number';
        }
    }
    
    jsConsole.writeLine('Last digit in English: ' + result(sNumber));
    

    Here is a working example

    为了您的信息,您可以获得没有循环的字符串的最后一个字符:

    var lastDigit = number[number.length-1]; 
    // assuming it will always have at least 1 character, add validation to be sure
    

答案 1 :(得分:0)

你实际上并没有调用结果。

要调用结果,您应该这样做:

result()

没有括号,你就意味着结果的价值实际上是一个函数。

如果你还将它连接到一些字符串,输入强制使你最终得到与你一样的结果:

jsConsole.writeLine('Last digit in English: ' + result.toString());