文字是什么!=“”是什么意思?

时间:2013-04-20 17:15:54

标签: javascript string while-loop

这是来自Eloquent Javascript的第6章:

代码:

 function splitParagraph(text) {
     var fragments = []; 
     while( text != "" )                         // ?
         if (text.charAt(0) == "*") {
               fragments.push({type: "emphasized"});

 etc...

我无法掌握while循环正在做什么。 文字是一个字符串。 while循环是否读取“而文本中没有剩余任何字符..”while循环是否逐个查看字符串中的每个字符,确保还剩下另一个字符?

4 个答案:

答案 0 :(得分:4)

while循环在内部条件为真时继续运行。在这种情况下,如果有问题的字符串不是空字符串,则text != ""为真。

在这种特殊情况下,我猜必须在循环内的某处更改text,否则在此处使用while构造是没有意义的。

注意:实际上,在JavaScript中,!===运算符会以非常奇怪的方式进行评估:0,[]和{{1}例如,所有人都被认为是平等的:

  • "" - >假
  • "" != [] - >假
  • 0 != [] - >假

0 != ""===可用于强制执行严格的相等。

答案 1 :(得分:1)

检查文本是否为空字符串(长度为0且不包含字符)。

答案 2 :(得分:1)

"Is the while loop looking at every character in the string 
one by one making sure there is another character left?"

是的,虽然没有显示整个循环几乎可以肯定正在做什么。

while条件检查text字符串是否为空。 如果不为空,则循环遍历循环体。 text.charAt(0)检查字符串的第一个字符。如果找到'*'字符, 一个元素被添加到fragments数组。

在正文中会有代码删除text字符串的第一个字符 然后循环处理字符串的下一个字符。

while( text != "" )                        
         if (text.charAt(0) == "*") {
               fragments.push({type: "emphasized"});

答案 3 :(得分:0)

  

text!=“”是什么意思?

这意味着如果text的值无法强制匹配""

考虑这段代码

if ("abc" != "") {
    console.log("1 ok");
}

if ([] != "") {
    console.log("2 ok");
}

if (0 != "") {
    console.log("3 ok");
}

if (false != "") {
    console.log("4 ok");
}

on jsfiddle

哦亲爱的,案例2和3以及4发生了什么?