2 回答

TA貢獻1812條經驗 獲得超5個贊
您只需在程序開始時將tab
設置為空字符串。
您不將其設置為函數內的空字符串。
因此它永遠不會重置為空字符串。
每次調用該函數時,tab
都會在其中添加破折號。
如果您想在每次調用函數時重置它,請在函數內重置。

TA貢獻1820條經驗 獲得超10個贊
已經回答了。還有一個不同的觀點可能會有所幫助:
問題與。使固定
每次 調用result(text)
都會向全局 添加破折號變量tab
(這里是相同長度的3倍:4 + 4 + 4)。 通常let
關鍵字描述如下:
聲明一個作用域變量,該變量僅在當前[范圍]內有效且具有生命周期(此處:對于 ,不僅僅是函數內部)。整個腳本
注釋并正確格式化(正確的縮進可提高可讀性?。┠哪_本:
let tab = ""; // declared at start of the script, means global scope
function result(text) {
// move declaration here so it always is reborn (local scope = new lifetime)
for (i in text) {
tab += '-';
}
return "<p>" + tab + "<br>" + text + "</p>";
}
根據您描述的意圖 范圍應該在函數內聲明。因此它具有本地作用域(僅在函數內部已知)。 此外,它會在每次調用該函數時自動重置。
選擇
在舊的控制臺使用 (Text-UI) 和 ASCII-Art 中,使用破折號等任何字符繪制文本線的基本方法-
描述為:
用字符 a 填充 n 個字符的寬度
返回包含重復字符a的字符串n次
因此他們發明了諸如 fillString( a, n )
或 a.repeat( n )
之類的函數。 類似的事情也可以在 JavaScript 中完成。
好處:
您可以參數化填充字符,例如
=
或_
您可以輕松重用此通用函數
獎勵:評論
我的經驗告訴我要注意代碼中的命名。 表達意圖和目的,這樣您和其他人現在以及 6 個月后就可以一目了然地看到變量和函數的管理情況。
大多數函數都會返回結果,這會執行更多操作:
function addSameWidthLineAbove(text)
let line
或textualBorder
或dashes
- 2 回答
- 0 關注
- 154 瀏覽
添加回答
舉報