这是来自Eloquent Javascript的第6章:
代码:
function splitParagraph(text) {
var fragments = [];
while( text != "" ) // ?
if (text.charAt(0) == "*") {
fragments.push({type: "emphasized"});
etc...
我无法掌握while循环正在做什么。 文字是一个字符串。 while循环是否读取“而文本中没有剩余任何字符..”while循环是否逐个查看字符串中的每个字符,确保还剩下另一个字符?
答案 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发生了什么?