javaScript一些基本概念

一、<script>標籤放在<body>底部,先顯示頁面可加快加載速度。
二、var 定義局部變量,省略則定義全局變量,可是不推薦。
clipboard.png
可一次定義多變量(,號分隔)
var message = "h1", found = false, age = 20;
三、數據類型:
5種基本數據類型 : undefined,Null,Boolean,Number,String;
1種複雜數據類型 : Object;
使用 typeof 可檢測變量的數據類型
例 : Alert( typeof(message) ) // "String";
typeof 爲操做符不是函數,因此能夠省略 ()
typepf null // Object;
四、Undefined : 定義但未賦初值。
var message;
alert(message); // undefined
alert(age); // error
五、NUll類型: 一個空對象指針
alert(null == undefiend) // true
六、Boolean類型.
true不必定等於1,false也不必定等於0.
大小寫敏感。
可對任何變量使用轉型函數 Boolean。
轉換規則:express

clipboard.png
if語句自動轉換:
var message = "hello";
if(message) { //轉爲true
alert ( "value id true");
}
七、Number 類型:數組

* 浮點數值 
    var float Num3 = .1   // 有效,但不推薦
* e 表示指數冪
    3.125 e7 ;  // 等於 3125000 : 3.125 * 10的7次冪        
    最高精度是17位小數,計算精度不如整數。        
    例 : 0.1 + 0.2 ≠ 0.3  而是 等於 0.3000000……4。
    if (a+b == 0.3) { }      // 永遠不要用float作測試
* NaN : 即非數值,是一個特殊的數值

任何數除以非數值都返回NaN,所以不影響其餘代碼執行。
NaN 的兩個特色 :瀏覽器

  1. 任何涉及到NaN的操做都返回NaN,(如 NaN / 10)
  2. NaN與任何值都不相等,包括自己。alet(NaN == NaN) ; //falseisNaN() ; 判斷是否「不是數值」。函數

    • 數值轉換 : Number(),parseInt(),parseFloat();

對於任何類型可用第一個,後兩個用於字符串;
Number()轉換字符串複雜且不合理,處理整數用parseInt();處理浮點數用parserFloat();
例 : parseInt(「1234blue」); // 1234八、String 類型性能

* 字符字面量

/n : 換行 /t 製表 /r 回車測試

* 特色

不可變,只能銷燬重建。編碼

* 轉爲字符串

tostring() : null 和 undefined 沒有此方法,要用String()方法;
簡便轉換方法 : 值與字符串相加 (「 」)。
注意 : 0.9 - "0.4" = 0.5 // 隱式類型轉換;
1 + 「2」 = "12";
九、Object 類型 : 一組數據和功能的組合
Object 類型是全部它的實例的基礎,所具備的任何屬性和方法一樣存在更具體的對象中。每一個實例都具備如下屬性和方法 :spa

* constructor() : 構造函數,保存着用於創造當前對象的函數;
* hasOwnProperty( property ) : 檢查給定屬性在當前對象實例中(不是在原型中) 是否存在;
* isPropertyOf(object) : 對象是不是當前對象原型;
* toLocalString() : 返回對象的字符串表示,與地區對應;
* toString() : 返回對象的字符串表示;
* valueof() : 返回對象的字符串、數值、布爾值表示,一般與tostring()同樣。

十、操做符 包括算數操做符(加號、減號等),位操做符,關係操做符和相等操做符。指針

* 一元操做符

++i : i = i + 1; // 先自加再賦值code

* 一元加減

該操做符對非數值應用時,會像Number()轉型函數同樣對值進行轉換。
對對象先調用valueof和tostring方法。
可用於基本算數運算,也能夠用於轉換數據類型。

* 位操做符

整數的補碼爲自己,負數的補碼爲取反加一;
按位 非 (NOT) : ~ 表示,反碼;
按位 與 (AND) : & 表示,同爲1得1,其餘爲0;
按位 或 (OR) : | 表示,同爲0得0,其餘爲1;
按位 異或 (XOR) : ^ 表示,同爲0,異爲1;
左移 : << 以0補位,32位;
有符號右移 : >> 保留符號位 0 : 正 1 : 負;
無符號右移 >>> 負數以絕對值二進制補碼錶示;

* 布爾操做符 : 非(NOT)  與(AND)   或(OR)

邏輯非(!) :
可用於任何值,不管類型都返回布爾值,先轉爲布爾值,再求反;
邏輯與(&) :
同真爲真,其餘爲假;
短路操做:第一個能決定結果,後邊就不用求值,如第一個爲false,結果直接爲false;
邏輯或(||) :同假爲假,其餘爲真有一個操做符不是布爾值,結果不必定返回布爾值;
與邏輯與同樣,短路運算;
可用短路邏輯爲變量賦值避免賦null和undefined。如 : var result = (A || B) // 當A不爲null,賦值A,不然爲B;

* 乘性操做符

乘法 : (*)除法 : (/)求模 : (%) // 餘數

* 加性操做符

5 + 5 = 10 5 + "5" = "55" "str" + 5 + 5 = "str55" "str" + (5 + 5) = "str10"

* 減性操做符 : 先進行隱式類型轉換(Number()): 注意轉換規則對number類型友好優先

5 - "2" = 3 5 - true = 4 5 - "" = 5 NaN - 1 = NaN

* 關係操做符 : >   <   >=   <=

比較字符串時比較的事字符編碼值,例 : a 爲 97 , B 爲 66「B」 < "a" // true "23" < 3 // true

* 相等操做符 : ==   !=   ===    !==

相等和不相等 ---- 先轉換再比較全等和不全等 ---- 比較但不轉換,比較數據類型

* 條件操做符(三目運算符)

A ? b : c // A爲真時值爲b,不然爲c

* 賦值操做符 : =

= 右邊的值賦給左邊變量賦值複合操做符 : *= /= %= += -= <<= >>= >>>=

* 逗號操做符

一條語句執行多個操做 : var num1 = 1 , num2 = 2,num3= 3;用於賦值時,老是返回表達式最後一個值 : var num = (5,1,4,8,0) //返回0十一、語句

* if語句 : 先用Boolean轉換

推薦使用代碼塊 : { }

* do - while 語句 : 後測試循環語句,循環內代碼至少執行一次

let i = 0;do {i +=2} while

* while語句 : 前測試循環語句,有可能不會被執行

var i = 0;while(i<10){i += 2;}

* for語句 : var定義的變量會污染全局,以後儘可能使用let
* var count = 10;

for(var i = 0;i < count;i++){alert(i);}alert(i); //10

* for-in語句 :

一種精準的迭代語句,可用來枚舉對象屬性,例 : for(property in expression) {} 返回的屬性無序,因瀏覽器而異;

* label語句

可在代碼中加標籤,以便未來使用 ;

* break 和 continue :

break直接跳出循環,continue跳到下一次循環;

* with語句 :

將代碼的做用域設置到一個特定對象中。語法 : with(expression){ } : 此語法會致使性能降低,不建議使用。

* switch語句 :

switch(expression){ case value : statement break; default : statement}十二、函數function functionName(org1,org2...){statements}

* 調用 : functionName();

可加return設置返回值;執行return後中止並當即退出,位於return後的代碼永遠不會執行。

* 理解參數

不介意傳遞的參數的種類和個數,因內部用數組來表示,函數體內能夠用arguments對象來訪問參數數組。命名參數只是提供便利,不是必須的,可在內部判斷參數的長度完成重載。全部傳遞都是值的傳遞,沒有值的自動賦予undefined值。

* 沒有重載

重載:函數名相同,參數的數量和類型不一樣。es中定義兩個同名函數,後者會覆蓋前者,經過檢查傳入參數的種類和數量能夠模仿重載。

相關文章
相關標籤/搜索