【问题标题】:l'm confused by the use of a javascript while statement我对使用 javascript while 语句感到困惑
【发布时间】:2016-07-26 11:47:24
【问题描述】:

我最近拿起了一些 javascript 代码——因为我不是 js 专家,一旦我开始运行它,我喜欢剖析它,以便更好地理解。

代码如下:

function checkCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(";");

    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];

        while (c.charAt(0) == " ") c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);

    return null;
}

令人困惑的是堆叠的 while 和 if 语句 - 如果我添加大括号,我会得到更清晰的图像:

        while (c.charAt(0) == " ") {
            c = c.substring(1, c.length);
        }
        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length, c.length);
        }

但我无法理解的是为什么要使用 while 语句 - 肯定是 'if' 更合适 - 还是我的括号弄错了?

澄清会很棒。

【问题讨论】:

  • 您正在使用 while 语句来删除开头的所有空格。 if 语句只会删减一次!此外,如果正文只有一行,则大括号是可选的:)
  • 您循环删除 c 开头的每个空格。它是字符串 c 的左修剪。
  • .trim() 是您应该使用的。看来你正在修剪字符串。
  • @Jai .trim() 可能是对的,但我们确定他还想删除字符串末尾的空格吗?

标签: javascript


【解决方案1】:

如果您有一个以多个空格开头的文本,首先您会将c.charAt(0) == " " 设为真,然后删除第一个字符。然后字符串开头的字符将是您最初拥有的第二个空格,因此它仍然是真实的并且空格将被删除。这将一直持续到您一开始没有任何空间为止。

【讨论】:

  • 那么 Jai 是否正确,因为它真的应该是一个修剪声明?
  • 可以,只要你不介意末尾的空格被删除
  • 我猜 js 中没有修剪开始 - 我没有编写代码,所以我可能会保持原样。
  • 同样如此,没有左修剪,但您可以使用stackoverflow.com/questions/1593859/left-trim-in-javascript中的代码轻松添加它
【解决方案2】:

我希望这个答案能让你更清楚。

我正在发布答案,因为我无法添加评论:)

如果语句:-

if 语句检查表达式是真还是假,然后仅当它为真时才运行语句中的代码。循环内的代码只运行一次...

While 语句:-

while 语句是一个循环。基本上,无论表达式为真多长时间,它都会继续执行 while 语句中的代码。

何时使用 while 循环:

当您不确切知道可能需要循环多少次条件时最好使用循环 - 如果您确切知道要测试条件的次数(例如 10 次),那么您会使用而是一个 for 循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多