1. 程式人生 > >2018.9.11 JavaScript學習的總結

2018.9.11 JavaScript學習的總結

1.javascript是解釋型語言,不要進行編譯的語言

  ***編譯:一次性把程式碼轉換成cpu看得懂的語言,一行一行的進行執行

  ***解釋:一行一行的解析,解析一行執行一行,解釋沒有編譯那麼快。

2.js的組成

  ***ECMAScript:js的語法的規範.

  ***DOM:js用來操作網頁上的元素的API。

  ***BOM:js操作瀏覽器的部分功能API。

3.script的屬性

  ***<script src="main.js"></script>:用來引入外部的的js便於後續的維護。

  ***<script type="text/javascript"></script>:用來告訴HTML為解釋的文件。

  ***<script async="async"></script>:非同步,多個人進行做多件事。

  ***<scritp sync="sync"></script>:同步,一個人有序做多件事。就是一步一步來。

  ***<script src="main.js" defer="defer"></script>:外部指令碼的文件將會被延遲的進行顯示,直到文件全部被解析完成才會去顯示和解釋執行外部指令碼文件,和async還有很大的區別的。

  ********小練習***********

  ***進行交換兩個數 的第一種方式:

  var num1=99; var num2=66; 

  var temp=num1;   num1=num2;  num2=temp;    

  console.log(num1);   console.log(num2); ------>輸出的為 66 99

  ***第二種方式:

  num1=num1+num2; num2=num1-num2; num1=num1-num2;//注意這種小練習一定要爛熟於心

4.資料型別

  ***基本資料型別: Number  String  Boolean  Undefined Null

  ***複雜資料型別:Object  Array  Date

  ***檢視當前的資料型別:typeof name或者 typeof (name)

這裡要注意的是,在進行浮點數比較時候,要轉換成*10或者*100進行比較,不然很容易就會出現精度問題

  例如:console.log(0.07*100) //這裡輸出的不是7而是 7.000000000000001

             console.log(0.1+0.2);//這裡輸出的也不是0.3而是0.30000000000000004

NaN:不是數值

  ***isNaN():就是任何不能轉換數值的,進行轉換的話就會發這個函式:例如:isNaN("red")//輸出的是true

  一個小練習: var num=prompt("請輸入一個數"); //會彈出一個輸入框,得到您輸入的東西進行判斷!

                        if(isNaN(num)){ console.log("您輸入的不是數值")

                       else{ console.log("您輸入的是數值!")}

\t:表示四個空格    \:進行轉義      \n:進行換行

字串是不可變的,一旦建立,值的話就是不能改變了,如果說要往裡新增,那麼就會在棧中重新開闢一個新的記憶體空間

舉個小栗子:var str="abc";    var str2=str+"123456";

                     console.log(str2);//這裡的str2的話是重新開闢了空間的。

  ***  這裡要注意的是: var a="abc" ; var b=234;  var c=a+b;//這裡做字串的拼接的話 ,數值會轉換為字串,然後一起作拼接!如果是相減的話就是轉化成數值:var d=a-b;//結果為NaN因為abc不是數值。

NaN,unfined,0,null,空字串,返回值都為false

  undefined:標識變數為賦值,這種型別字面量就一個數值undefined

 

型別的轉換:

  ***轉換成字串:

          第一種方法:

          var age=16; console.log(age.tostring())

          tostring();//預設十進位制  tostring(8);//八進位制  tostring(16);//十六進位制   tostring(2);//二進位制

          ***這裡要注意啦:null和undefined是沒有tostring()方法的

          第二種方法:使用string()函式來進行轉換null,undefined

          第三種方法:用字串進行拼接。

****轉換成數值:Number(), parseInt(), paserFloat(),

        Number():可以把任意數值進行轉換成陣列,如果要轉換成字串中有一個不是熟知的字元就會返回NaN;

      true:返回值為1   false:返回值為0;

 

下面有個經常遇到的小問題:

  ++a:表示先a++,在進行返回值;      ++a:表示先進行返回,在進行a=a+1;

 

邏輯運算子: &&有一個為false返回為false

                      || :有一個 為true就返回true

                      !進行取反;

  ***&&:如果兩個運算元都不是boolean的型別,且左右兩邊都是true的話,則返回第二個運算元;如果有一個運算元是false的話那麼返回的就是這個運算元的具體的值(注意不是返回false) 同理可得||的用法。

判斷語句:switch主要用於多條件的時候把,其他的if比較簡單。

  下面是一些小練習:

//進行輸出1-100

for(var i=0;i<=100;i++){

console.log(i);

}

//列印1-100的和

var sum=0;

for(var j=0;j<=100;j++){

    sum=sum+j;

}

console.log(sum);

//求1-100之間所有的偶數和,所有的奇數的和

var oddSum=0;

//偶數和

var evenSum=0;

for(var i=1;i<=100;i++)

{

if(evenSum%2==0){

//先判斷是否為偶數

evenSum+=i;

}else{

//奇數

oddSum+=i;

}

}

console.log("奇數和為:"+evenSum);

console.log("偶數和為:"+oddSum);

//求1-100 之間所有數的和,平均值

var sum=0,avg; //avg可以不用賦初值

for(var i=0;i<=100;i++){

sum+=i;

}

//求平均數

avg=sum/100;

console.log("1-100的平均數是:"+avg);

//年利率千分之三 5年後獲得的本金是多少

var money=10000;//定義本金

var rate=0.003;//定義年利率

for(var i=1;i<=5;i++){

money +=money*rate;

}

console.log("五年後的本金為:"+money);

 

//這題的思想很重要

//關於兔子問題 這個 問題困擾我好久 規律是這樣子的 1,1,2,3,5,8,13,21

var n1=1;

var n2=1;

for( var i=3;i<=12;i++){

//定義一個第三個月的對數

sum=n1+n2;

n1=n2;//往後移動了一位

n2=sum;//同理往後移動一位

 

}

console.log("第12個月的兔子的對數為:"+sum);


 

//進行列印9*9乘法口訣表

document.write("<table border='1px' cellpadding='0' cellspacing='0'>");

for(var i=1;i<=9;i++){//外迴圈控制行

document.write("<tr>")

for(var j=1;j<=i;j++){//內迴圈控制列

document.write("<td>");

document.write(i+"*"+j+"="+i*j);

document.write("</td>");

}

document.write("</tr>")

}

document.write("</table>")

//列印10行10列的正方形

for(var i=1;i<=10;i++){

for(var j=1;j<=10;j++){

document.write("☆");

}

document.write("<br/>");

}

//列印直角三角形

for(var i=1;i<=10;i++){

for(var j=1;j<=i;j++){

document.write("(* ̄︶ ̄)");

}

//進行分行處理

document.write("<br/>");