亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript命令“返回”不經意間加倍

Javascript命令“返回”不經意間加倍

寶慕林4294392 2023-12-19 10:38:15
我有以下問題:我試圖在一個與一些 JavaScript 混合的常見 HTML 頁面中編寫一個簡單的程序,以便用函數的結果填充特定的 div。該函數的結果由一串文本組成,下面是一行破折號,破折號的數量與文本字符串中的字符數相同。我的代碼如下,在正文中:<div id="div1"></div><script>let tab = "";function result(text) {for (i in text) {tab += '-';}return "<p>" + tab + "<br>" + text + "</p>";}document.getElementById("div1").innerHTML = result("Bear") + result("Bear") + result("Bear");</script>渲染的 HTML 返回以下結果:只有該函數的第一次調用才按預期工作:4 個破折號代表 4 個字母。但第二次調用渲染的破折號是原來的兩倍,第三次調用渲染的破折號是原來的三倍?;蛟S“回歸”是不是命令用不了?
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

只需在程序開始時將tab設置為空字符串。

將其設置為函數內的空字符串。

因此它永遠不會重置為空字符串。

每次調用該函數時,tab 都會在其中添加破折號。

如果您想在每次調用函數時重置它,請在函數內重置。


查看完整回答
反對 回復 2023-12-19
?
拉莫斯之舞

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 中完成。

好處:

  1. 您可以參數化填充字符,例如=_

  2. 您可以輕松重用此通用函數

獎勵:評論

我的經驗告訴我要注意代碼中的命名。 表達意圖和目的,這樣您和其他人現在以及 6 個月后就可以一目了然地看到變量和函數的管理情況。

  • 大多數函數都會返回結果,這會執行更多操作:function addSameWidthLineAbove(text)

  • let line 或 textualBorder 或 dashes



查看完整回答
反對 回復 2023-12-19
  • 2 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號