008

(4 / 8)
⚡ 登入後報錯可獲 3天VIP 免廣告——立即登入

腦袋中飛快地回憶《Javascript基礎修煉要訣》中關於字符串的相關功法。

“有了,字符串有一個split函數,可以把一個字符串通過某種規則和標記符號進行分隔,並返回一個數組。比如0.01,如果通過點號分隔,就會返回一個字符串數組,整個字符串數組裡麵應該會有2個字符串,一個是‘0’,另一個是‘01’!”

var num01 = "0.01";

var num01_arr = num01.split(".");

“果不其然,經過點號分割後,0.01就被拆開了,變成了一個字符串數組[0,01],而我想要獲得的是後麵的01,因為數組下標是從0開始的,所以需要這樣獲取。”

var num01 = "0.01";

var num01_arr = num01.split(".");ᒑ

var num01_arr_2 = num01_arr[1];

alert(num01_arr_2.length);

結果如圖2-8所示。“成了!”葉小凡微微一笑。經過努力,葉小凡終於獲取到了0.01這個數小數點後麵的位數,2位就對應倍數100。如果現在要計算0.1加0.02,隻需要先把這兩個數中比較小的那個數字通過上麵的方法求出倍數,然後將這兩個數字都乘以這個倍數,就可以化浮為整了。因為整數的計算沒有精度丟失的問題,所以可以放心大膽地進行計算,計算完成後,再將結果除以倍數就得到正確答案了!

圖2-8 運行結果

2.6 函數的三大要義

“現在,化浮為整的方案我已經基本得出,接下來就要進行函數封裝了。所謂函數,也是我最近幾日才學習到的功法。就好像之前我研究的化浮為整,雖然能夠實現功能,但是距離完美還遠遠不夠。計算的數字千差萬別,我不可能每次都手動地化浮為整,那樣對我的法力消耗過大。但是如果我可以把這個過程封裝為函數,效果就大大不同了。”

葉小凡調整了一下呼吸,重新盤膝坐好,想起了《Javascript基礎修煉要訣》中關於函數的說明:函數之修,第一要義便是理解返回值、參數列表和函數體。可以把函數想象成一個“黑盒子”,所謂參數,就是丟到這個黑盒子中的物體,可以是單個物體,也可以是多個物體。黑盒子的內部空間就是函數的函數體!在函數體中,可以對丟進來的參數進行處理,處理結束後,如果該函數的設計者認為需要將得到的某個結果從黑盒子中扔出,作為對於“黑盒子訪問者”的獎賞,就可以使用return關鍵字將其拋出。

函數之修,第二要義便是業務邏輯,作為函數的設計者,必須清楚地明白自已設計這個函數是為了什麼。葉小凡眼中一亮,想到了剛才化浮為整的過程,因為0.1和0.2都是小數,所以直接相加會產生精度丟失的問題,如圖2-9所示。

為了解決這個問題,就要先把0.1和0.2都換算成整數進行計算,最後再除以一個倍數10。對於這種小數的計算,不妨設計一個通用的函數,將需要相加的參數傳遞進去,將化浮為整的邏輯就寫在函數體中,最後將結果返回出去,豈不快哉?

圖2-9 運行結果

函數需要用function關鍵字定義,葉小凡思索片刻,心中了然,於是打出一段代碼。

函數並沒有寫完,但是葉小凡不著急,因為他明白,在編寫函數的時候,一定不能著急。在有了一個大概的目標和方向後,為了保險,應該寫一點,測試一點。不求一口吃成個大胖子,隻求已經寫上去的代碼都是經得起推敲和認證的。比如有一個修煉者,自恃武藝高強,一口氣打出100行代碼流,然而在第5行代碼中出現了一個嚴重的錯誤,那麼剩下的95行代碼就是沒有意義的。不僅如此,這個人很可能還會受到運功失敗帶來的強烈反噬!葉小凡深知這個道理,所以此時他不急著把剩下的代碼敲完,而是先試著能不能正確獲取傳入的兩個參數各自小數點後麵的位數。在代碼中,葉小凡用變量a和b存儲獲取的小數位數,然後用console對象的log方法打印出來。(讀者隻需要知道console.log函數可以將某個變量打印出來,在瀏覽器中,可以按下f12鍵找到console控製台,查看打印出來的數據,在此不做過多講解。)

函數之修,第三要義便是函數的調用。要調用一個函數,隻需要在函數的名稱右邊打一對小括號就行了。如果函數有一個參數,就在小括號中填入一個具體的數據,比如一個變量或者直接量。如果函數有多個參數,就在圓括號中填入多個具體數據,用逗號分隔。就比如下麵這樣。

請前往oop.tw閱讀本書最新內容

;01 = 1mun rav

;02 = 2mun rav

;)2mun,1mun(dda

成完數函dda 7.2

:算計碼代下以過經麼那,20.0和2.0為據數個兩的來進傳如比。小誰大誰數位個兩這下一較比要需來下接,了數位的麵後點數小的數參個兩的入傳取獲以可經已在現,好很。碼代寫編續繼邊一,索思邊一凡小葉

數位的麵後點數小的字數個兩取獲//

;htgnel.]1[)"."(tilps.1mun = a rav

;htgnel.]1[)"."(tilps.2mun = b rav

。碼代下以出打地迫不容從凡小葉,晰清漸漸路思。22.0得,001以除後最,22=2+02算計來下接。數個那的大較間之b和a是就2,果結的乘相01個2是就001,2和02成變,001乘時同20.0和2.0把要需麼那,2=b,1=a是就果結

數位的大較個那是就xam,來一樣這


✅ 付款功能已修復,現在可以正常購買了 — 支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
😤 廣告總在最入戲的時候跳出來?
月付 $5 USD,升級 VIP 後全站所有頁面廣告立即全關——
不是只有這本書,是整個 oop.tw 每一頁、每一章,從此一路讀到底不被打斷。 $5 USD ≈ 一杯珍奶的錢,換一整個月零廣告清爽閱讀 · 隨時可取消
✅ 全站廣告全關 ✅ 工口專區全本解鎖 ✅ 月卡 $5 USD · 季卡 $13 USD · 年卡 $45 USD
⭐ 登入 / 免費註冊後升級
加我 LINE 好友,分享好書不錯過
第一時間獲得新書推薦、書單更新通知
立即加入
上一頁 書頁/目錄
/ 8 頁
下一頁
為本書評分(每位讀者可評一次,提交後無法修改)
發表評論
以 匿名讀者 身份發表
讀者評論