java script 基礎二

  一.***數據類型轉換:

       1. ***js是弱類型編程語言:3點:

            1.聲明變量時,不用考慮變量中將要存儲的數據類型

            2.賦值時,動態判斷數據的類型,同一個變量,先後可保存不同類型的數據。

            3.運算時,js會根據自己的需要,動態轉換數據類型

    2.大類:

        1.隱式轉換:無需程序員干預,而自動完成的轉換。

     先討論算數運算中的隱式轉換:        

                    規律:

                        1.默認情況下,一切轉數字類型,做算數計算

                               boolean類型,true-->1  flase-->0

                         2.+法中,只要有一個字符串,都轉爲字符串,+變爲字符串拼接

例:

var n1= 2,n2=3;
    s1="2",s2="3",
        b1=true,b2=false;
console.log(n1+n2);//5
console.log(s1+n2);//23
console.log(s2-n1);//1
console.log(s2-b1);//2
console.log(s1*b2);//0
console.log(b1+b2);//1
console.log(s1+b2);//2false

從左向右兩兩計算

console.log(n1+s2+b1);//23true
console.log(n1+b1+s2);//33

表達式:由數據,變量和運算符組成的公式

         *默認,從左向右,兩兩計算

         NaN:“不是一個數字”的數字,

         =Not a Number

      何時遇到:當無法轉爲數字時,或無法正常計算時,結果爲NaN

      特點:和任何數據做計算,結果永遠爲NaN

            加法計算中,碰上字符串,也會被字符化“NaN”  

var s="Hello";
var n=NaN;
    console.log(s-n);

-->結果爲NaN

            

        typeof(x);返回x的數據類型名稱:Number String Boolean Undefined   


    2.強制轉換:程序員主動調用專門的函數完成的轉換

            1.任意 to String:2種:

                var str=x.string();

                var str=String(x); -->相當於隱式轉換

            區別:***String(x); 萬能方法;

            x.string();對於null和undefinded轉不了

            何時使用:通常都是js在需要時,自動調用;


            2.***任意 to Number :3種:

                1.任意 to Number:var n=Number(x); --隱式

                    何時使用:將非字串類型轉爲數字類型時使用

                                    將純字符串組成的字符串轉爲數字類型時

            特例:Number(" ") -->0


                2.String to Number:

                    1. to 整數:var  n= parselnt(String(str));

                            何時使用:將*字符串*轉爲整數時使用

                            如果傳入的不是字符串,則先隱式轉爲String

                            原理:從頭開始讀取字符串中每個字符,跳過開頭的空字符,只讀取數字字符,只要碰到第一個不是數字的字符,就退出;不認識小數點。

console.log(parseInt("12px"));//12
console.log(parseInt("1 2px"));//1
console.log(parseInt("12.5px"));//12
console.log(parseInt("$12"));//NaN
console.log(parseInt(true));//NaN
console.log(parseInt("true"));//NaN

                      對比:Number(x)  vs  pareslnt(str)

                Number只認識純數字組成的數字串,可轉Bool類型

                pareslnt(str)認識包含非數字字符的字符串開頭位置的數字,無法轉換Bool類型


                    2.String to 浮點數:var n=parseFloat(str);

                        何時使用:只要將字符串轉爲小數時,用法和parselnt用法完全一樣,只認第一個碰到的小數點。


                    3.任意類型 to Boolean: var Bool=Boolean(x);

                    " " 0 NaN underfined null  --> false

                    其他都是true

         

    3.運算符和表達式:(隱式轉換,默認都轉爲number);

        程序:人的想法在計算機中的執行步驟

        運算符:程序中模擬人的思維運算或判斷的符號

        表達式:由數據,變量,和運算符組成的公式


        算數運算符:+ - * % ++ --

            %模運算(取餘數):m%n:m/n,取 除不盡的餘數部分

            何時:

                    1.判斷能否整除:

                    比如:判斷奇偶數:m%2等於0,說明m是偶數;m%2不等於0,說明m是奇數;

                    2.限制計算結果,永遠小於除數;

         ***遞增,遞減運算:++ --

                n++:n=n+1;將n中的值+1,再保存回n中

            2種情況:

            ++n:前++,先將n中的值+1,返回*新*值

            n++:後++,將n中的值+1,返回*舊*值

            ++n或n++,單獨使用,無影響;

            但是參與其他表達式中時,會影響執行結果:

var my=10;
var lp=my++;
console.log(lp);//10
console.log(my);//11
var lp=++my;
console.log(lp);//11
console.log(my);//11

筆試題:

var n=3;
console.log(n++ + ++n + n++);//從左往右依次相加,n值頁進行累計 3+5+5=13
console.log(++n +n++ + ++n);//從左往右依次,7+7+9=23
console.log(n);//9

        ***運算關係:做比較,比大小 --> >< <= <= != ==都帶有隱式轉換

        返回值:true false

        隱式轉換:默認都轉爲數字再比較

        特殊情況:

            1.如果無法轉爲數字:轉爲NaN

                NaN不等於,不大於,不小於任何值,甚至自己 -->NaN!=x -->true

                isNaN(num):專門判斷一個num數值是否爲NaN;如果是NaN,就返回true;否則返回false

               何時使用:只要判斷一個數值無效,就用isNaN

                開發中何時使用:反着用

                    用isNaN判斷一個num是不是數字,或是否能被隱式轉爲數字使用

                isNaN(num):返回true -->num是數字

                                   返回false -->num不是數字


            2.比較

                undefined  vs  null

                underfined:所有變量的默認初始值,自動賦值

                null:主動清空一個變量,釋放一個對象

            例:

                var n;var m=null;console.log(n==m); -->true

                var n;var m=null;console.log(n===m); -->false

                typeof(undefined)   -->underfined

                typeof(null)      -->object

                ===:全等,嚴格相等,首先類型必須相同,其次值相同

            何時使用:要求類型相同,且值相等


           3.如果參加比較的兩個值都是字符串類型,不再轉數字,而是pk每個字符的unicode號


            (怎麼判斷中午的unicode)“李”.charCodeAT(0)

            凡是條件:一般都是關係運算或邏輯運算

    

   ****邏輯運算:多個條件(關係運算),綜合得出最後的結論,只能返回true/false

   隱式轉換:默認轉換爲bool類型:boolean(x)  null NaN underfined 0 " "空 轉換爲false

   何時使用:只要綜合多個條件,得出最終結論

   如何使用:3種:

    &&:讀作且,程序中稱之爲“邏輯與”

       條件1&&條件2:必須條件1和條件2都爲true,結果才爲true,只要任意一個爲false,結果就爲false

    ||:讀作或,程序中稱之爲“邏輯或”

       條件1||條件2只要:任意一個條件爲true,結果就爲true,只有所有條件都爲false,結果才爲false

    !:讀作不,程序中稱之爲“邏輯非”

       !條件:顛倒條件的true或者false的結果


使用套路:

    ***短路邏輯:邏輯運算中,如果前一個條件已經可以得出結論,則後續所有條件不再執行

    ***利用短路邏輯實現按條件執行語句:條件&&操作:如果條件滿足,則執行操作;否則,什麼也不做 

     邏輯與: 1個條件,1件事,滿足就做,不滿足就不做

  邏輯或:值1||2:如果值1有效,就返回值1,否則返回值2

筆試題:                                                                    

4&&5;//5
4||5;//4
0&&5;//0
0||5;//5

何時使用:1個條件,1件事,滿足就做,不滿足就不做

var total=400;
    total>=500&&(total=total*0.8);
    console.log("實際收款:"+total);

利用邏輯或實現默認值效果,或者實現二選一取值效果:

    1||2:如果值1有效,就返回值1,否則返回值2

var reply=prompt("請用戶輸入回覆");
console.log(reply||"主人很懶");

    

    (瞭解即可)位運算:將數值的二進制左移或者右移n位

        左移n位:相當於*2的n次方

        右移n位:相當於/2的n次方


    *賦值運算:基本賦值運算:=

        所有表達式都會返回一個結果

        ***賦值運算的結果,是等號右側表達式的值

        

    (擴展)賦值運算:對變量內部的值進行修改的簡寫方法

        比如:total=total*0.8 --> total*=0.8

        何時使用擴展賦值運算:需要修改變量中的值,再存回變量中

        包括:+=   -=  *=   /=   %=   用法完全一樣


    ***三目運算:根據不同條件,判斷執行不同操作,或返回不同的值

    三目運算 即 條件運算

    何時使用:多個條件,多件事,必須多選一執行

    如何使用:

            條件1?操作1:

            條件2?操作2:

             more?more。。。。

            特點:

                1.如果前一個條件已經滿足,則不再向下判斷,保證每次只能有一個操作被執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章