第三章 基本概念

一、任何語言都包括語法、操做符、數據類型、流程控制語句、函數數組

二、語法:函數

  ①JS裏的全部標識符都區分大小寫,標識符包括變量名、函數名等,標識符只能以字母下劃線_美圓$開頭,切記不能以數字開頭以及用關鍵字和保留字做爲標識符;性能

  ②註釋有單行註釋//,也有塊級註釋/**/;編碼

  ③在腳本頂部或者函數內部的頂部使用」use strict」便可啓動嚴格模式;spa

三、變量:ES的變量爲鬆散類型能夠var能夠定義任何數據類型的變量,使用var操做符能夠在該域下定義一個變量,若是沒有初始化該變量則默認值爲undefined,若沒有使用var操做符則會直接建立一個全局變量對象

四、數據類型:五種基本數據類型:Undefined、Null、Boolean、Number、String,一種複雜數據類型:Object(實質由一對無序鍵值對組成,空對象/null);內存

  ①操做符typeof,用於檢測數據類型,返回undefined/null/布爾值/string/number,注意:對未聲明的變量使用會返回undefined,null被認爲是空對象的引用;字符串

  ②Undefined只有一個值undefined,注意:undefined的值派生於null的值,所以在值上它們是相等的;原型

  ③Null的值只有null,一個變量在未來用於保存對象時應當初始化成null;同步

  ④Boolean有ture/false兩個值,但它們字面值和數值是不一樣的,任何數據類型的變量均可以調用Boolean()函數轉爲布爾值,如下值會被轉爲false:空字符串、0/NaN、null、undefined;

  ⑤Number:數值字面量格式有十進制、以0開頭的八進制、以0x開頭的十六進制;浮點數值會存在舍入偏差的問題而且若是浮點數實際爲整數將會被自動轉爲整數;Number.MAX_VALUE和Number.MIN_VALUE保存着最大和最小數值;NaN即非數值,用於表述一個將要返回數值而未返回數值的狀況,任何涉及NaN的操做都會返回NaN,NaN不與任何數值相等,包括其自己,能夠經過isNaN()函數來判斷一個數值是否不是數值;數值轉換:Number()、用於字符串轉換成數值的parseInt(字符串,可選參數:數值的進制)和parseFloat(),Number()函數遵循如下規則:布爾值轉換成1/0,null轉爲0,undefined轉爲NaN,字符串爲空轉爲0,非數值型字符串轉爲NaN,對象先調用valueof()再調用toString()轉爲數值;parseInt()遵循如下規則:空字符將會轉換成NaN,忽略空格後的一個字符爲非數值將會轉換成NaN,趕上數值型字符的部分將會轉換成數值,小數點以及以後的字符將會被忽略,parseFloat()只會轉換第一個小數點,第二個小數點將會被忽略;

  ⑥String:包含轉義序列\n,\’,\」,\t,\r,\f,\b,字符串被建立後不能修改,只有銷燬再重建,除了undefined和null以外,其它數據類型都有toString()方法,當調用String()方法進行類型轉換時,若是該數據toString()方法就會調用,不然即爲null或者undefined;

  ⑦Object:全部對象都經過new操做符進行實例化,全部實例化的對象都有Object的如下方法:constructor用於保存建立當前對象的函數,hasOwnproperty(字符串形式的屬性)用於檢測該屬性是否在該實例化對象中,isPrototypeof(object)用於檢查傳入的對象是不是傳入對象的原型,propertyIsEnumerable(字符串形式的屬性)用於檢測給定的屬性可否使用for-in語句進行枚舉,toLocaleString()返回對象的字符串形式;

 

五、操做符:

  ①一元操做符:a.前置性和後置型遞增遞減操做符(++/--)做用於非數字值遵循的規則:將該數據轉換成數字或者NaN再執行遞增遞減;b.加減操做符(+/-):會對非數值數據調用Number()函數;

  ②位操做符:對NaN和Infinity這兩個值做用時會被當作0處理,非數值都會調用Number()轉型函數進行轉換,a.按位非(~):做用於操做數後,結果是操做數的負數減一;b.按位與(&):只有兩個數值的對應位都是1纔是1,不然是0;c.按位或(|):只要兩個數值的對應位中有一個是1結果就是1;d.按位異或(^):只有兩個數值的對應位不一樣時纔是1,相同時是0;e.左移(操做數<<移動位數):會將操做數按照移動位進行左移,空出的位置補0;f.有符號右移(操做數>>移動位數):保留符號位,空出的位置按照符號位補充;g.無符號右移(>>>):不管正負數,空出的位均由0補充;

  ③布爾操做符:a.非(!):會將非布爾值數據轉換成布爾值再求其反;b.與(&&):在有一個操做數不是布爾值的時候遵循如下原則:若是第一個操做數是對象則返回第二個操做數,若是第一個操做數不是對象,第二個操做數是對象則在第一個操做數求值是ture的狀況下才返回第二個操做數,若是兩個操做數都是對象則返回第二個操做數對象;若是操做數存在null/undefined/NaN,則返回null/undefined/NaN。注意:與操做屬於短路原則,當且僅當第一個操做數爲ture時纔會執行第二個操做數,不然只執行第一個操做數。c.或(||):當兩個操做符中有一個不是布爾值時,就不必定返回布爾值,此時遵循如下原則:若是第一個操做數是對象時就返回第一個操做數,若是第一個操做數不是對象,而第二個操做數是對象時,當且僅當第一個操做數求值是false時,才返回第二個對象,若是兩個操做數都是對象,則返回第一個操做數;注意:或操做也屬於短路操做,當且僅當第一個操做數求值爲false時纔會求值第二個操做數。

  ④乘性操做符:當操做數中不存在數值時會調用Number()進行轉型,a.乘法(*):Infinity與0相乘返回NaN;數與NaN相乘返回NaN;b.除法(/):零除零返回NaN;c.求模(%);

  ⑤加性操做符:a.加法(+):+0 + -0 = +0 ;若是有一個操做數是字符串則遵循如下原則:若是兩個操做數都是字符串則鏈接字符串,若是隻有一個操做數是字符串,則將另一個操做數調用toString()方法,轉成字符串再相加;b.減法(-):+0 - -0= -0;-0 - -0 = +0;若是操做數不是數值,則調用Number()將其轉成數值,若是轉成的結果是NaN,則減法的結果是NaN;

  ⑥關係操做符(</>/<=/>=):遵循如下原則:若是兩個操做數都是字符串,則比較它們的字符串編碼,若是有一個操做數是數值,則將另外一個操做數轉成數值再比較;與NaN比較都是NaN;

  ⑦相等操做符:a.相等和不相等(==/!==):會先將操做數轉換再比較,若是一個操做數中有布爾值,則將布爾值轉成1/0,若是操做數中有字符串和數值,則將字符串轉換成數值,若是操做數中有NaN,則相等操做符返回false,不相等操做符返回ture;b.全等和不全等(===/!===):未轉換直接比較兩個操做數,null和undefined屬於不一樣類型的值,於是爲不全等;

  ⑧條件操做符:a?b:c  對a求值,當a值爲ture時返回b,不然返回c;⑨賦值操做符(=);⑩逗號操做符(,):逗號在用於賦值的時候,只會返回表達式的最後一項

 

六、語句:continue退出內部循環,break退出全部循環;

 

七、函數:function functionName(arg0,arg1....argN){}; 使用arguments對象能夠訪問函數中的全部參數,它是一個類數組,而且與參數的值同步,但不是佔據相同的內存空間,若是函數沒有指定返回值則返回undefined,函數也沒有重載.

相關文章
相關標籤/搜索