JavaScript_day04

day04內容

學習目標
1.操作符
2.數據類型轉換

1.操作符

  1. 邏輯與 && (同真才真,有假則假) 也被稱爲短路語句
    可應用於任意數值。如果有一個操作數不是布爾類型,邏輯與就不一定返回boolean類型
    1.如果第一個操作數是
    null,NaN,undefined,false,0,""可被轉換爲false的值的時候返回該值
    2.如果第一個數其他,返回第二個數
    var s1 = 8;
    var s2 = “briup”;
    var s3 = “”;
    var result = s1 && s2; //briup
    var result2 = s3 && s2; //空字符串

  2. 邏輯或 ||(有真則真,同假才假)
    false ||
    如果兩個操作數都是null,NaN,undefined,false,0,"“可被轉換爲false的值的時候返回該值
    如果第一個操作數是null,NaN,undefined,false,0,”" 則返回第二個操作數

  3. 布爾操作符, 非(NOT)
    邏輯非 !
    該操作符應用任何類型數值都返回一個【布爾值】。先將任意類型的數值轉換爲Boolean,然後取反,
    !a ==> !Boolean(a)
    !0 //true
    !"" //true
    !NaN //true
    !false //true
    連用兩次邏輯非 ,就可以將任意數據類型轉化爲Boolean類型,!!a ==> Boolean(a)
    !!"" //false

  4. 三目運算符 ? :
    variable = boolean_expression ? true_value : false_value;
    如果boolean_expression爲true,將true_value賦給variable,否則將false_value賦給variable

    例如:求任意兩個數之間最大值
    function max(m,n){
    return m>n?m:n; //如果m>n爲true返回m,如果m>n爲false,返回n
    }

  1. 類型轉換
    1. 其他數據類型到Boolean類型轉換
      通過Boolean() 函數轉換

      【Boolean true false】
      String 非空字符串 “”
      Number 任何非0 0和NaN
      Object 任何對象 null
      Undefined n/a undefined (n/a not applicable 不適用)
      例如:
      Boolean(""); //false
      Boolean(0); //false
      Boolean(NaN); //false
      Boolean(null) //false
      Boolean(undefined) //false
      Boolean(“briup”); //true
      Boolean(1); //true

    2. 其他數據類型到數值類型轉換
      1.Number()
      1) 如果轉換的值是null,undefined,boolean,number
      Number(true); //1
      Number(false); //0
      Number(null); //0
      Number(undefined); //NaN
      Number(10); //10 如果是數字值,原樣輸出
      2) 如果是字符串:
      Number(“123”); //如果僅包含數值,轉換爲對應的數值
      Number(“234.1”);//解析爲對應的小數
      Number("+12.1");//首位爲符號位,其餘爲爲數值,轉換爲對應的數值
      NUmber(“1+2.3”);//NaN 符號位出現在其他位置,解析爲NaN
      Number(“0xa”); //如果僅包含十六進制格式,轉爲爲對應的十進制的值
      Number(“010”); //【注意!】不會當做八進制被解析,結果爲10
      Number(""); //空字符串被轉換爲0
      Number(“123ac”);//包含其他字符: NaN
      Number(" 12"); //12
      2.parseInt()
      1) 如果轉換的值是null,undefined,boolean,number
      parseInt(true); //NaN
      parseInt(false); //NaN
      parseInt(null); //NaN
      parseInt(undefined);//NaN
      parseInt(10); //10 如果是整數值,原樣輸出
      parseInt(10.3); //10 如果是小數,捨去小數點一級後面的內容
      2) 如果是字符串:
      parseInt(“123”); //123;如果僅包含數值,轉換爲對應的數值
      parseInt(“234.1”);//234;小數點後面的數值省略
      parseInt("+12.1");//12; 首位爲符號位,其餘爲爲數值,轉換爲整數
      parseInt(“0xa”); //10; 如果僅包含十六進制格式,轉爲爲對應的十進制的值
      parseInt(“010”); //10; 【注意!】不會當做八進制被解析,結果爲10
      parseInt(""); //NaN;空字符串被轉換爲NaN
      parseInt(“1+2.3”);//1; 如果首位爲數值,依次向後解析,找到連續的數值,直到遇到第一個非數值的,將之前獲取的數值轉換爲Number返回
      parseInt(“123ac”);//123;
      3.parseFloat()
      與parseInt() 類似,但是也有不同:
      1.字符串中的第一個小數點是有效的,而第二個小數點則無效其後的內容會被省略
      2.始終忽略前導0
      parseFloat(“22.3.4”) //22.3
      parseFloat(“022.34”); //22.34

    3. 其他數據類型到字符串類型轉換

      1. toString()函數
        默認情況下,toString()是以十進制格式返回數值的字符串表示,通過傳遞參數,可以輸入以二進制,八進制,十六進制乃至任意有效進制格式的字符串值
        var num = 10;
        num.toString(); “10”
        num.toString(2); “1010”
        num.toString(8); “12”
        num.toString(16); “a”
        但是null ,undefined 沒有toString() 方法
        null.toString() //報錯 TypeError: null has no properties
        undefined.toString(); //報錯 TypeError: undefined has no properties
      2. String() 構造函數
        String(null) “null”
        String(undefined); “undefined”

m + n
		1) 當m,n不爲String,Object類型的時候,先將m,n轉換爲Number類型,然後再進行計算
			true + false;	  //1;Number(true)+Number(false);
			true + 1;	  //2;Number(true) + 1
			null + undefined; //NaN;Number(undefined) -> NaN
		2) 當m,n有一個爲String,無論另一個操作數爲何(但不爲對象)都要轉換爲String,然後再進行拼接
			"1" + true;	// 1true
			"1" + undefined;// 1undefined
			"1" + 1;	// 11
		3) 當m,n 有一個爲對象,如果該對象既重寫toString,又重寫了valueOf方法,先調用valueOf方法獲取返回值,將該返回值和另外一個操作數進行運算。如果該對象沒有重寫valueOf方法,將調用toString方法獲取返回值,將該返回值和另外一個操作數進行運算。
			var o = {
				name:"briup",
				valueOf:function(){
					return "1";
				}
			}
			o+1;		//2;o+1

~~

note

~~
複習
5種基本數據類型
undefined
null
boolean
number
string
1種引用數據類型
Object類型
var obj = {
name:‘zhangsan’,
age:12,
key:‘test’
}
訪問obj的屬性
1.點表示法
obj.name
obj.age
2.中括號表示法
obj[‘name’]
obj[‘age’]
var key = ‘name’;
obj[key] //zhangsan

                obj['key']    //跟key變量是沒有關係的,直接訪問的是obj對象中的key屬性。test
                obj.key  //test
    Array類型(直接或者間接繼承自Object類型)
        var  arr  =  [3,4,5,true,{},{},[[6,7],2]];
        arr.length屬性獲取數組的元素個數,數組的長度
        訪問數組的元素
            arr[index]
                index是索引,是下標,從0開始,到arr.length-1結束
                arr[3]    //true
                arr[6][0][1]        //7

    Function類型(直接或者間接繼承自Object類型)
        聲明函數
            function  test(a,b){}
        運行函數
            test(1,2)
typeof關鍵字
    返回值    
        undefined          undefined類型
        boolean              true/false
        number                1,2,3,NaN,Infinity...
        string                ''    ""    'hello'
        object                null  {}  []
        function            function(){}

操作符
算術運算符
+ - * / %
遞增遞減
++ –
後置++ – 先使用,後++ – a++
前置++ – 先++ --,再使用 ++a
賦值運算符
= 將等號右邊的賦值給等號左邊的
+= a+=2
-= a-=2
= a=2
/= a/=2
%= a%=2
一元運算符 + -
將其他數據類型轉成number數據類型
比較運算符
== === != !== < <= > >=

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章