這個問題在這里已經有了答案: ( for... in ) 和 ( for... of ) 陳述句之間有什么區別? (14 個回答) 15 小時前關閉。
我遇到了一些我認為與范圍相關的奇怪行為,但我無法解釋為什么會發生這種情況。
所以這是有問題的一段代碼。我正在嘗試使用 Camel Case 來區分一些單詞并區分由破折號和下劃線分隔的文本。忽略演算法還不完全正確的事實,這不是重點。這是我注意到問題的階段。
function toCamelCase(str){
let isDash = false
for (let char in str) {
if (char === "-") {
isDash = true
}
}
if (isDash) {
return str.split("-").map(word => word[0].toUpperCase() word.slice(1, word.length 1)).join("")
} else {
return str.split("_").map(word => word[0].toUpperCase() word.slice(1, word.length 1)).join("")
}
}
let result = "why-false"
console.log(toCamelCase(result))
所以 isDash 確定文本包含哪種型別的分隔符。我顯然可以使用箭頭函式代替這種方法,它會完美地作業。像這樣的東西:
let isDash = () => {
for (let char in str) {
if (char === "-") {
return true
}
但我不明白為什么前面的例子不能正常作業。我已經閱讀了有關范圍的內容,如果該變數是在更高級別定義的,則應該可以重新分配給該變數。即使我在函式外定義了 isDash ,它仍然不起作用。它的值始終保持初始值:false。為什么 if 陳述句不將其值更改為 true?
let x = [1, 4, 5, 7]
let txt = 0
let working = "no"
for (let i in x) {
txt = x[i]
if (txt > 4) {
working = "yes"
}
}
console.log(working)
As you can see, if I write something similar to demonstrate if it's possible to use the variable in a nested if statement, it works fine and working will log yes. What am I missing here? I would really appreciate some help, this really is a dead end to me and I wouldn't have asked for help if I could've figured it out myself. Big thanks to anyone that can explain this stuff to me!
uj5u.com熱心網友回復:
這里的問題是你的 for 回圈:
for (let char in str) {
if (char === "-") {
isDash = true
}
}
for-in 回圈遍歷索引或鍵,而不是值(您可以通過console.log(char);在回圈中進行測驗)。相反,使用 for-of 循??環。
uj5u.com熱心網友回復:
問題是您正在使用 for...in 陳述句,它回圈遍歷物件的可列舉屬性名稱。
for (let char in str) {
if (char === "-") {
isDash = true
}
}
如果您不打算在塊內重新分配變數,則可以使用 for...of 陳述句迭代字串并使用 const。
這邊走:
for (const char of str) {
if (char === "-") {
isDash = true
}
}
uj5u.com熱心網友回復:
我相當肯定這是因為您使用了“let”而不是“var”。(老實說,在這篇文章之前我還沒有看到它使用過......)。
請參閱這篇文章:https : //www.google.com/amp/s/www.geeksforgeeks.org/difference-between-var-and-let-in-javascript/amp/
如果這解決了您的問題,請進一步閱讀兩者之間的差異。
我個人總是只使用 var 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335807.html
標籤:javascript node.js if-statement scope variable-assignment
上一篇:ifelse按行排序值
