摘要:前言就在前幾天,語(yǔ)言入門(mén)到進(jìn)階部分的專(zhuān)欄維生素語(yǔ)言終于完成了。表達(dá)式條件判斷部分,用于判斷循環(huán)終止。注意事項(xiàng)為了防止循環(huán)失去控制,禁止在循環(huán)體內(nèi)修改循環(huán)變量。判斷部分的省略判斷部分恒為真死循環(huán)。
就在前幾天,C語(yǔ)言入門(mén)到進(jìn)階部分的專(zhuān)欄 ——《維生素C語(yǔ)言》終于完成了。全文共計(jì)十八個(gè)章節(jié)并附帶三張筆試練習(xí)篇,美中不足的是,第一章和第二章是以截圖形式展現(xiàn)的。由于本人一開(kāi)始是在有道云筆記上寫(xiě)的初稿,當(dāng)時(shí)想方便省事(有道云排版?zhèn)€人感覺(jué)確實(shí)比較美觀)就直接以截圖的形式完成了第一章和第二章。本人考慮到因?yàn)槭墙貓D,不能復(fù)制文中出現(xiàn)的代碼,不方便讀者進(jìn)行復(fù)制粘貼,所以我打算重新寫(xiě)一下第一章和第一章的內(nèi)容,并且重新進(jìn)行了排版。
? C語(yǔ)言中,由一個(gè)分號(hào)( ;)隔開(kāi)的即為一條語(yǔ)句。
? 這些都是語(yǔ)句:
( 一行里只有 ;的語(yǔ)句,我們稱其為 "空語(yǔ)句" )
int main(void) { printf("hello world!/n"); // 語(yǔ)句; 3 + 5; // 語(yǔ)句; ; // 空語(yǔ)句;}
? 定義: 0為假,非0即為真(比如:1是真,0是假)
? 單 if 語(yǔ)句演示:
int main(void) { int age = 0; scanf("%d", age); if ( age >= 18 ) printf("成年/n"); return 0;}
? if...else 演示:
int main(void) { int age = 0; scanf("%d", age); if ( age >= 18 ) printf("成年/n"); else printf("未成年"); return 0;}
? 多分支演示:
int main(void) { int age = 0; scanf("%d", age); if(age<18) { printf("少年/n"); } else if(age>=18 && age<30) { printf("青年/n"); } else if(age>=30 && age<50) { printf("中年/n"); } else if(age>=50 && age<120) { printf("老年/n"); } else { printf("請(qǐng)輸入正確的年齡/n"); } return 0;}
? 判斷一個(gè)數(shù)是否為奇數(shù):
int main(void) { int n = 0; scanf("%d", &n); if(n % 2 == 0) { printf("不是奇數(shù)/n"); } else { printf("是奇數(shù)/n"); } return 0;}
? 如果條件成立,需要執(zhí)行多條語(yǔ)句,應(yīng)該使用代碼塊,一對(duì)大括號(hào),就是一個(gè)代碼塊。
? 建議:無(wú)論是一行語(yǔ)句還是多行語(yǔ)句,建議都加上大括號(hào)。
? 不加大括號(hào)的隱患:懸空 else
? 下列代碼會(huì)打印 abc 嗎?
int main(void) { int a = 0; int b = 2; if ( a == 1 ) if ( b == 2 ) printf("123/n"); else printf("abc/n"); return 0;}
? 運(yùn)行結(jié)果:(什么都沒(méi)打印出來(lái))
? 解析:因?yàn)闆](méi)有大括號(hào),else 與離它最近的一個(gè)if相結(jié)合( 即內(nèi)部 if ),所以即使 else 與外部 if 相對(duì)應(yīng),也沒(méi)用。
? 訂正:加上大括號(hào)之后,可以使代碼的邏輯更加清楚!
int main(void) { int a = 0; int b = 2; if(a == 1) { if(b == 2) { printf("hehe/n"); } } else { printf("haha/n"); } return 0; }
? 運(yùn)行結(jié)果: abc
代碼一:可讀性不好,但是節(jié)省空間
代碼二:可讀性強(qiáng)
代碼三:我們希望 hello 不被打印出來(lái),但是事實(shí)上他打印出來(lái)了;
int main(){ int num = 0; if ( num = 5 ) { printf("hello/n"); // = 賦值 == 判斷相等; } return 0;}
? 解析:為什么會(huì)這樣呢?因?yàn)樵?if 語(yǔ)句中 num = 5 相當(dāng)于重新賦值了。
? 為了防止把一個(gè)等號(hào)寫(xiě)成兩個(gè)等號(hào),發(fā)生這樣的BUG,我們可以這么寫(xiě):
int main(){ int num = 0; if (5 == num) { printf("hehe/n"); } return 0;}
這樣寫(xiě),如果不小心寫(xiě)成了 "=",運(yùn)行都運(yùn)行不了,可以讓自己很容易地發(fā)現(xiàn)問(wèn)題。這是種好的代碼風(fēng)格!未來(lái)如果涉及到常量和變量相比較,比較相等與否,我們不妨把變量放在雙等號(hào)的右邊,常量放在左邊,以防不小心少打一個(gè) "=" ,導(dǎo)致程序出錯(cuò)。
? 關(guān)于 return 0
int test() { if (1) { return 0; // 當(dāng)return 0 執(zhí)行了,下面的代碼都不會(huì)執(zhí)行了; } printf("hehe/n"); return 1;}int main(void) { test(); return 0;}
? 介紹:switch 語(yǔ)句是一種多分支語(yǔ)句,常常用于多分支的情況。一個(gè)標(biāo)準(zhǔn) switch 語(yǔ)句的組成:
① case 語(yǔ)句項(xiàng):后面接常量表達(dá)式(類(lèi)型只能是整型和枚舉類(lèi)型)。
② break 語(yǔ)句:用來(lái)跳出 switch 語(yǔ)句,實(shí)際效果是把語(yǔ)句列表劃分為不同的部分。
③ default 子句:默認(rèn)執(zhí)行的語(yǔ)句,當(dāng)所有 case 都無(wú)法與 switch 的值相匹配時(shí)執(zhí)行。
? 注意事項(xiàng):
1. case 和 default 后面記得加 :(冒號(hào)),而不是分號(hào)。
2. 在 switch 語(yǔ)句中可以出現(xiàn)if語(yǔ)句。
3. switch 后面必須是整型常量表達(dá)式。
4. 每個(gè) switch 語(yǔ)句后面只能有一個(gè) default。
5. 不一定非要加 default,也可以不加。
? 建議:
1. 在最后一個(gè) case 語(yǔ)句的后面也加上一條 break 語(yǔ)句,以防未來(lái)增添語(yǔ)句項(xiàng)時(shí)遺漏。
2. 建議在每個(gè) switch 中都加入 default 子句,甚至在后邊再加一個(gè) break 都不過(guò)分。
? switch 用法演示:用戶輸入一個(gè)數(shù)字x,返回星期(eg. 1 >>> 星期一)
int main(void) { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期一/n"); break; // 跳出switch case 2: printf("星期二/n"); break; case 3: printf("星期三/n"); break; case 4: printf("星期四/n"); break; case 5: printf("星期五/n"); break; case 6: printf("星期六/n"); break; case 7: printf("星期日/n"); break; default: // 默認(rèn)執(zhí)行的語(yǔ)句; break; } return 0;}
? 多 case 同一個(gè)結(jié)果情況演示:輸入1-5,輸出 工作日;輸入6-7,輸出休息日;其他數(shù)字返回error
int main(void) { int day = 0; scanf("%d", &day); switch (day) { case 1: case 2: case 3: case 4: case 5: printf("工作日/n"); break; case 6: case 7: printf("休息日/n"); break; // 末尾加上break是個(gè)好習(xí)慣; default: printf("輸入錯(cuò)誤/n"); break; // 這里可以不加break,但是加上是個(gè)好習(xí)慣; return 0;}
? 下列代碼輸出值是多少?
int main(void) { int n = 1; int m = 2; switch(n) { case 1: m++; case 2: n++; case 3: switch(n) { case 1: n++; case 2: m++; n++; break; } case 4: m++; break; default: break; } printf("m = %d, n = %d/n", m, n); return 0;}
? 答案:m = 5, n = 3
? 解析:因?yàn)閚=1,所以進(jìn)入switch后執(zhí)行case1的語(yǔ)句m++,此時(shí)m=3,由于該語(yǔ)句項(xiàng)末尾沒(méi)有break,繼續(xù)向下流到case2的語(yǔ)句n++,此時(shí)n=2,又沒(méi)有break,流向case3,case3中又嵌了一個(gè)switch(n),此時(shí)因n=2,執(zhí)行內(nèi)部switch的case2的語(yǔ)句m++和n++,此時(shí)m=4,n=3,后面有break,跳出內(nèi)部switch,但是外部switch的case3后面依然沒(méi)有break,所以流向case4,m++,此時(shí)m=5,后面終于有break了。運(yùn)行下來(lái)后的結(jié)果為 m=5,n=3。
? 定義:當(dāng)滿足條件時(shí)進(jìn)入循環(huán),進(jìn)入循環(huán)后,當(dāng)條件不滿足時(shí),跳出循環(huán)。
? 注意事項(xiàng):while 循環(huán)條件將會(huì)比循環(huán)體多執(zhí)行一次。
while 循環(huán)中,當(dāng)條件表達(dá)式成立時(shí),才會(huì)執(zhí)行循環(huán)體中語(yǔ)句,每次執(zhí)行期間,都會(huì)對(duì)循環(huán)因子進(jìn)行修改(否則就成為死循環(huán)),修改完成后如果 while 條件表達(dá)式成立,繼續(xù)循環(huán),如果不成立,循環(huán)結(jié)束。
? while死循環(huán):表達(dá)式結(jié)果如果為非0,為真,循環(huán)就執(zhí)行
int main(void) { while(1) printf("hehe/n"); return 0;}
? 運(yùn)行結(jié)果如下:
? while 循環(huán)打印 1~10 的數(shù)字:
int main(void) { int i = 1; while(i<=10) { printf("%d ", i); i++; } return 0;}
? 運(yùn)行結(jié)果: 1 2 3 4 5 6 7 8 9 10
? break 語(yǔ)句在 while 循環(huán)中的效果:
在 while 循環(huán)中,break 用于永久地終止循環(huán)。
int main(void) { int i = 1; while(i <= 10) { if(5 == i) // i=5時(shí)停止循環(huán); break; printf("%d ", i); i++; } return 0;}
?? 運(yùn)行結(jié)果:1 2 3 4
? continue 語(yǔ)句:
int main(){ int i = 1; while(i<=10) { if(i==5) { continue; // 跳至判斷部分; } printf("%d ", i); i++; } return 0;}
? 運(yùn)行結(jié)果: 1 2 3 4(程序會(huì)一直判斷)
? getchar:
從流(stream)或鍵盤(pán)上,讀取一個(gè)字符。
返回值:如果正確,返回ASCII值;如果讀取錯(cuò)誤嗎,返回 EOF(文件結(jié)束標(biāo)志)。
? putchar:?jiǎn)渭兊妮敵鲆粋€(gè)字符。
? getchar 使用方法演示: "輸入什么就返回什么"
int main(void) { int ch = getchar(); putchar(ch); // 輸出一個(gè)字符; return 0;}
? 運(yùn)行結(jié)果:(假設(shè)輸入a)? a
? getchar 與 while 的結(jié)合: "一直從鍵盤(pán)上讀取字符的程序"
int main(void) { int ch = 0; // ctrl+z - getchar 就讀取結(jié)束; while ( (ch = getchar()) != EOF ) { putchar(ch); } return 0;}
? 如果想停止輸入,怎么辦?
? 解決方法: 輸入 ctrl + z 可以使 getchar 結(jié)束讀取。
? getchar 只打印數(shù)字:
int main(void) { int ch = 0; while( (ch=getchar()) != EOF ) { if(ch<"0" || ch>"9") { continue; // 發(fā)現(xiàn)不是數(shù)字,跳回判斷部分,重新getchar; } putchar(ch); } return 0;}
? 清理緩沖區(qū):用戶輸入密碼后,讓用戶確認(rèn)(Y/N)
int main(void) { char password[20] = {0}; printf("請(qǐng)輸入密碼:>"); scanf("%s", password); printf("請(qǐng)確認(rèn)密碼(Y/N) :>"); int ch = getchar(); if(ch == "Y") { printf("確認(rèn)成功/n"); } else { printf("確認(rèn)失敗/n"); } return 0; }
? 運(yùn)行結(jié)果:(假設(shè)用戶輸入了123456;Y)確認(rèn)失敗
?? 為什么還沒(méi)有讓用戶確認(rèn)(Y/N)就顯示確認(rèn)失敗了?
? 解析:輸入函數(shù)并不是從鍵盤(pán)上讀取,而是從緩沖區(qū)中讀取內(nèi)容的;鍵盤(pán)輸入123456時(shí)敲下回車(chē)鍵,此時(shí)為 “123456/n”,這時(shí)scanf將123456取走,getchar讀取到的就是“/n”了,因?yàn)椤?n”不是Y,執(zhí)行了else的結(jié)果,所以顯示確認(rèn)失敗。
? 解決方案:在 scanf 后加上一個(gè)“讀取 /n ”的 getchar()
int main(void) { char password[20] = {0}; printf("請(qǐng)輸入密碼:>"); scanf("%s", password); printf("請(qǐng)確認(rèn)密碼(Y/N) :>"); // 清刷緩沖區(qū); getchar() int ch = getchar(); if(ch == "Y") { printf("確認(rèn)成功/n"); } else { printf("確認(rèn)失敗/n"); } return 0; }
? (假設(shè)用戶輸入了123456;Y)確認(rèn)成功
? (假設(shè)用戶輸入了123 456;Y)確認(rèn)失敗
?“用戶輸入了空格,確認(rèn)Y,為什么顯示確認(rèn)失敗?”
? 解析:剛才加入的一個(gè)getchar()處理掉了空格,導(dǎo)致后面“/n”沒(méi)人管了;
? 解決方案:加入循環(huán)
int main(void) { char password[20] = {0}; printf("請(qǐng)輸入密碼:>"); scanf("%s", password); printf("請(qǐng)確認(rèn)密碼(Y/N) :>"); // 清理緩沖區(qū)的多個(gè)字符; int tmp = 0; while( (tmp = getchar()) != "/n" ) { ; } int ch = getchar(); if(ch == "Y") { printf("確認(rèn)成功/n"); } else { printf("確認(rèn)失敗/n"); } return 0; }
? (假設(shè)用戶輸入了123 456;Y)確認(rèn)成功
? 定義:
① 表達(dá)式1:初始化部分,用于初始化循環(huán)變量。
② 表達(dá)式2:條件判斷部分,用于判斷循環(huán)終止。
③ 表達(dá)式3:調(diào)整部分,用于循環(huán)條件的調(diào)整。
? 注意事項(xiàng):
① 為了防止for循環(huán)失去控制,禁止在for循環(huán)體內(nèi)修改循環(huán)變量。
② for循環(huán)內(nèi)的表達(dá)式可以省略,但是得注意。
? 建議:
① 建議使用“左閉區(qū)間,右開(kāi)區(qū)間”的寫(xiě)法:
for( i=0; i<10; i++ ) 左閉,右開(kāi)區(qū)間 ?for( i=0; i<=9; i++ ) 左右都是閉區(qū)間 ?
② 不要在for循環(huán)體內(nèi)修改循環(huán)變量,防止for循環(huán)失去控制。
? for 的使用方法演示
① 利用 while 循環(huán)打印1~10數(shù)字:
int main(void) { int i = 1; // 初始化 while(i<=10) { //判斷部分 printf("%d ", i); i++; // 調(diào)整部分 } return 0;}
? 運(yùn)行結(jié)果:1 2 3 4 5 6 7 8 9 10
② 利用 for 循環(huán)打印1~10數(shù)字:
int main(void) { int i = 0; for(i=1; i<=10; i++) { printf("%d ", i); } return 0;}
? 運(yùn)行結(jié)果:1 2 3 4 5 6 7 8 9 10
? break 語(yǔ)句在 for 循環(huán)中的效果:
int main(void) { int i = 0; for(i=1; i<=10; i++) { if(i==5) { // 當(dāng)i==5時(shí); break; // 直接跳出循環(huán); } printf("%d ", i); }}
? 運(yùn)行結(jié)果:1 2 3 4
?? 什么沒(méi)有打印5?
? 解析:因?yàn)楫?dāng) i==5 時(shí),break 跳出了循環(huán),循環(huán)中 break 之后的語(yǔ)句全都不再執(zhí)行,printf 位于 break 之后,所以5自然不會(huì)被打印出來(lái);
? continue 在 for 循環(huán)中的效果
if 中的 continue 會(huì)陷入死循環(huán),但是在 for 中并不會(huì):
int main(void) { int i = 0; for(i=1; i<=10; i++) { if(i == 5) continue; // 跳至調(diào)整部分(i++); printf("%d ", i); }}
? 運(yùn)行結(jié)果:1 2 3 4 5 6 7 8 9 10
?? 這里為什么又沒(méi)打印 5?
? 解析:因?yàn)楫?dāng) i==5 時(shí),continue 跳至調(diào)整部分,此時(shí) i++,i 為6。同上,所以5自然不會(huì)被打印。i 為6時(shí),if 不成立,繼續(xù)打印,最終結(jié)果為 1 2 3 4 6 7 8 9 10(跳過(guò)了5的打印);
? for 循環(huán)體內(nèi)修改循環(huán)變量的后果:
int main(void) { int i = 0; for (i=0; i<10; i++) { if (i = 5) { printf("haha/n"); } printf("hehe/n"); } return 0;}
? ? hehehahahehehaha…… ?死循環(huán)
? 定義:
① for 循環(huán)是允許嵌套的;
② 外部的 for 循環(huán)稱為外部循環(huán),內(nèi)部的 for 循環(huán)稱為內(nèi)部循環(huán);
? for 嵌套的演示:
int main(void) { int i = 0; int j = 0; for (i=0; i<10; i++) { for (j=0; j<10; j++) { printf("hehe/n"); } } // 10x10 == 100 return 0;}
? (打印了100個(gè)hehe)
? for 循環(huán)的省略:
① for 循環(huán)的 "初始化、判斷部分、調(diào)整部分" 都可以省略。
② 判斷部分的省略 - 判斷部分恒為真 - 死循環(huán) ?。
③ 如果不是非常熟練,建議不要省略。
? 判斷部分的省略:
int main(void) { // 判斷部分恒為真 - 死循環(huán) for(;;) { printf("hehe/n"); } return 0;}
? hehehehehehe…… ?死循環(huán)
? 省略帶來(lái)的弊端
假設(shè)我們希望下列代碼能打印 9 個(gè)呵呵:
int main(void) { int i = 0; int j = 0; for(; i<3; i++) { for(; j<3; j++) { printf("hehe/n"); } } return 0;}
?? 運(yùn)行結(jié)果:hehe hehe hehe (只打印了3個(gè))
? 解析:因?yàn)?i=0,內(nèi)部 for 打印了3次 hehe,此時(shí) j=3,這時(shí) i++,j因?yàn)闆](méi)有初始化,所以此時(shí) j仍然是3,而判斷部分要求 j<3,自然就不再打印了,程序結(jié)束。
? 請(qǐng)問(wèn)要循環(huán)多少次?
int main(void) { int i = 0; int k = 0; int count = 0; for(i=0,k=0; k=0; i++,k++) { k++; count++; } printf("count:%d", count); return 0;}
? 答案:count = 0,一共循環(huán)0次。
? 解析:判斷部分 k=0,賦值為 0 時(shí)為假,所以一次都不會(huì)循環(huán)。
? 定義:在檢查 while() 條件是否為真之前,該循環(huán)首先會(huì)執(zhí)行一次 do{} 之內(nèi)的語(yǔ)句,然后在 while() 內(nèi)檢查條件是否為真,如果條件為真,就會(huì)重復(fù) do...while 這個(gè)循環(huán),直至 while() 為假。
? 注意事項(xiàng):
① do...while 循環(huán)的特點(diǎn):循環(huán)體至少執(zhí)行一次。
② do...while 的使用場(chǎng)景有限,所以不是經(jīng)常使用。
③ 簡(jiǎn)單地說(shuō)就是:不管條件成立與否,先執(zhí)行一次循環(huán),再判斷條件是否正確。
? do...while 使用方法演示:
int main(void) { int i = 1; do { printf("%d ", i); i++; } while(i<=10); return 0;}
? 運(yùn)行結(jié)果: 1 2 3 4 5 6 7 8 9 10
? break 語(yǔ)句在 do...while 循環(huán)中的效果:
int main(void) { int i = 1; do { if(i==5) { break; } printf("%d ", i); i++; } while(i<10); return 0;}
? 運(yùn)行結(jié)果:1 2 3 4
? continue 語(yǔ)句在 do...while 循環(huán)中的效果:
int main(void) { int i = 1; do { if(i == 5) continue; printf("%d ", i); i++; } while(i<=10); return 0;}
? C語(yǔ)言中提供了可以隨意濫用的 goto 語(yǔ)句和標(biāo)記跳轉(zhuǎn)的標(biāo)號(hào)。最常見(jiàn)的用法就是終止程序在某些深度嵌套的結(jié)構(gòu)的處理過(guò)程。
“ goto 語(yǔ)句存在著爭(zhēng)議”
1. goto 語(yǔ)句確實(shí)有害,應(yīng)當(dāng)盡量避免。
2. 理論上講goto語(yǔ)句是沒(méi)有必要的,實(shí)踐中沒(méi)有g(shù)oto語(yǔ)句也可以很容易的寫(xiě)出代碼。
3. 完全避免使用 goto 語(yǔ)句也并非是個(gè)明智的方法,有些地方使用 goto 語(yǔ)句,會(huì)使程序流程 更清楚、效率更高。
? 注意事項(xiàng):goto 語(yǔ)句只能在一個(gè)函數(shù)內(nèi)跳轉(zhuǎn)。
? 可以考慮使用 goto 的情形:
for(...) { for(...) { for(...) { // HOW TO ESCAPE? } }}
? 體會(huì) goto 語(yǔ)句的特點(diǎn):
int main(void) {flag: printf("hehe/n"); printf("haha/n"); goto flag; return 0;}
?? hehehahahehehaha (? 死循環(huán))
? goto實(shí)戰(zhàn):一個(gè)關(guān)機(jī)程序
C語(yǔ)言提供的用于執(zhí)行系統(tǒng)命令的函數(shù):system()
關(guān)機(jī)指令:shutdown?-s?-t?60 (60秒后關(guān)機(jī))
取消關(guān)機(jī):shutdown?-a
#include #include #include int main(void) { char input[20] = {0}; // 存放輸入的信息; system("shutdown -s -t 60"); // 關(guān)機(jī)指令; printf("[系統(tǒng)提示] 計(jì)算機(jī)將在一分鐘后關(guān)機(jī) (取消指令:/cancel) /n"); again: printf("C://Users//Admin> "); scanf("%s", &input); if(strcmp(input, "/cancel") == 0) { system("shutdown -a"); // 取消關(guān)機(jī); printf("[系統(tǒng)提示] 已取消。/n"); } else { printf(""%s" 不是內(nèi)部或外部命令,未知指令。/n", input); printf("/n"); goto again; } return 0;}
Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .
百度百科[EB/OL]. []. https://baike.baidu.com/.
比特科技. C語(yǔ)言基礎(chǔ)[EB/OL]. 2021[2021.8.31]. .
本章完。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/121142.html
摘要:局部變量的作用域是變量所在的局部范圍。生命周期變量的生命周期變量的創(chuàng)建和銷(xiāo)毀之間的時(shí)間段局部變量的生命周期進(jìn)入作用域生命周期開(kāi)始,出作用域生命周期結(jié)束。 前言: 就在前幾天,C語(yǔ)言入門(mén)到進(jìn)階部分的專(zhuān)欄——《維生素C語(yǔ)言》終于完成了。全文共計(jì)十八個(gè)章節(jié)并附帶三張筆試練習(xí)篇,美中不足的是,第...
摘要:語(yǔ)言中使用斜杠來(lái)表示一個(gè)字符串的結(jié)束。注意事項(xiàng)由于被替換,如果字符串末尾有,換行會(huì)出現(xiàn)兩次。函數(shù)的原型成功返回失敗返回將的字符串錄入到文件指針中。 前言: 考慮到之前在專(zhuān)欄中講字符串的時(shí)候有些知識(shí)點(diǎn)沒(méi)有詳細(xì)地講解,所以本篇是對(duì)字符串相關(guān)的知識(shí)點(diǎn)的補(bǔ)充篇!例如 %s 輸出左對(duì)齊右對(duì)齊,限制...
摘要:為此決定自研一個(gè)富文本編輯器。例如當(dāng)要轉(zhuǎn)化的對(duì)象有環(huán)存在時(shí)子節(jié)點(diǎn)屬性賦值了父節(jié)點(diǎn)的引用,為了關(guān)于函數(shù)式編程的思考作者李英杰,美團(tuán)金融前端團(tuán)隊(duì)成員。只有正確使用作用域,才能使用優(yōu)秀的設(shè)計(jì)模式,幫助你規(guī)避副作用。 JavaScript 專(zhuān)題之惰性函數(shù) JavaScript 專(zhuān)題系列第十五篇,講解惰性函數(shù) 需求 我們現(xiàn)在需要寫(xiě)一個(gè) foo 函數(shù),這個(gè)函數(shù)返回首次調(diào)用時(shí)的 Date 對(duì)象,注意...
閱讀 1385·2021-09-26 09:55
閱讀 1921·2019-08-30 12:45
閱讀 1063·2019-08-29 11:20
閱讀 3560·2019-08-26 11:33
閱讀 3424·2019-08-26 10:55
閱讀 1692·2019-08-23 17:54
閱讀 2388·2019-08-23 15:55
閱讀 2346·2019-08-23 14:23