指令式編程的思維
所謂命令式編程,是以命令為主的,給機(jī)器提供一條又一條的命令序列讓其原封不動(dòng)的執(zhí)行。程序執(zhí)行的效率取決于執(zhí)行命令的數(shù)量。因此才會(huì)出現(xiàn)大O表示法等等表示時(shí)間空間復(fù)雜度的符號。
而函數(shù)式語言并不是通常意義上理解的“通過函數(shù)的變換進(jìn)行編程”。
??? 循環(huán)
??? //定義變量
??? var abc = 5;
??? //定義一個(gè)函數(shù)
??? function f(){
??? printStr(3)
??? }
??? //打印輸出
??? console.log(abc)
??? //執(zhí)行結(jié)果:5;程序從上倒下執(zhí)行,遇到函數(shù)后跳過函數(shù)執(zhí)行后背的代碼,函數(shù)是不調(diào)用不執(zhí)行;
封裝函數(shù)
封裝其實(shí)封裝,字面解釋就是封起來裝好,事實(shí)上也確實(shí)是這樣子的;
??? //var prinstr = "";
??? function juxing(r,c){
????? for(var j=0;j<r;j++){
????????? //用for循環(huán)輸出一行字符串
????????? for(var i=0;i<c;i++){
????????? printStr +="*";
????????? }
????????? //每輸出一行“*”進(jìn)行換行
????????? printStr +="\n";
????? }
??? }
??? //調(diào)用矩形函數(shù)
??? juxing(5,5);
抽象函數(shù)
抽象函數(shù)就是指沒有給出具體方法的函數(shù);
??? //定義默認(rèn)的輸出字符串
??? var a ="";
??? function hang(num,cont){
??? //循環(huán)拼接輸出一行字符串
??????? for(var i=0;i<num;i++){
??????????? printstr += cont;
??????? }
??? }
??? //換行函數(shù)
??? function br(){
??????? //當(dāng)輸出一行就進(jìn)行換行
??????? printstr += "\n"
??? }
??? //兩個(gè)函數(shù)合并到一起就是以下函數(shù)
??? function jx(r,c){
??????? for(var j=0;j<r;j++){
??????? hang(c,"#");
??????? br();
??????? }
??? }
??? //調(diào)用jx函數(shù)
??? jx(5,5);
JS 中聲明變量需要注意:
??? (function(){
??? var a = 1;
??? })()
??? //a 是一個(gè)局部變量;
??? //變量函數(shù)
??? var b = function(){
??? }
??? function f(){
??????? return function(){
??????? }
??? }
??? var c = f();
??? //c 等于f函數(shù)內(nèi)部的函數(shù);