Javascript 什么是文本!=&引用&引用;什么意思?

Javascript 什么是文本!=&引用&引用;什么意思?,javascript,string,while-loop,Javascript,String,While Loop,这来自于雄辩的Javascript中的第6章: 代码: function splitParagraph(text) { var fragments = []; while( text != "" ) // ? if (text.charAt(0) == "*") { fragments.push({type: "emphasized"}); etc... 我很难理解whi

这来自于雄辩的Javascript中的第6章:

代码:

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

 etc...

我很难理解while循环在做什么。文本是一个字符串。while循环是否读取“while text not have any characters remained..”while循环是否逐个查看字符串中的每个字符,以确保还有另一个字符?

while循环在内部条件为真时继续运行。在这种情况下,
text!=如果所讨论的字符串不是空字符串,则“
为true

在这种特殊情况下,我想
文本
必须在循环中的某个地方更改,否则在这里使用
while
构造是没有意义的

注意:实际上,在JavaScript中,
=
==
运算符将以一种非常奇怪的方式进行计算:例如,0、
[]
都将被认为是相等的:

  • “”!=[]错误
  • 0!=[]错误
  • 0!=“”
    ->错误

==
==
可用于强制严格相等。

while
循环在内部条件为true时保持运行。在这种情况下,
text!=如果所讨论的字符串不是空字符串,则“
为true

在这种特殊情况下,我想
文本
必须在循环中的某个地方更改,否则在这里使用
while
构造是没有意义的

注意:实际上,在JavaScript中,
=
==
运算符将以一种非常奇怪的方式进行计算:例如,0、
[]
都将被认为是相等的:

  • “”!=[]错误
  • 0!=[]错误
  • 0!=“”
    ->错误

==
==可用于强制严格相等。

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

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

什么是文本!=”“什么意思

这意味着如果无法强制
文本的值与
匹配

考虑一下这个代码

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

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

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

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

哦,天哪,案例2、3和4发生了什么

"Is the while loop looking at every character in the string 
one by one making sure there is another character left?"
什么是文本!=”“什么意思

这意味着如果无法强制
文本的值与
匹配

考虑一下这个代码

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

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

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

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

哦,天哪,案例2、3和4发生了什么

"Is the while loop looking at every character in the string 
one by one making sure there is another character left?"
是的,尽管没有显示整个循环,但这几乎可以肯定是正在进行的操作

while条件检查
文本
字符串是否为空。 如果不是空的,循环将在循环体中迭代。
text.charAt(0)
检查字符串的第一个字符。如果找到“*”字符, 一个元素被添加到
片段
数组中

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

while( text != "" )                        
         if (text.charAt(0) == "*") {
               fragments.push({type: "emphasized"});
是的,尽管没有显示整个循环,但这几乎可以肯定是正在进行的操作

while条件检查
文本
字符串是否为空。 如果不是空的,循环将在循环体中迭代。
text.charAt(0)
检查字符串的第一个字符。如果找到“*”字符, 一个元素被添加到
片段
数组中

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

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

如果直接复制(是,还是有遗漏?)。它渴望成为一个无限循环和一个堆栈溢出。如果直接复制的话(是这样的,还是遗漏了什么?)就远远不够雄辩。它渴望成为一个无限循环和堆栈溢出。在这种特殊情况下,只要
text
的长度不是0(空),while循环就会迭代。。然后它将检查文本的第一个字符是否为“*”?在这种特殊情况下,只要
text
不是长度0(空)…,while循环就会迭代。。然后它将检查文本的第一个字符是否为“*”?!==和===也更快。很好的建议。我是否应该始终使用
==
===
超过
=
==
嗯,非严格运算符也有其用途。例如,
2=='2'
但是
2!='2'
!==和===也更快。很好的建议。我是否应该始终使用
==
===
超过
=
==
嗯,非严格运算符也有其用途。例如,
2=='2'
但是
2!='2'