之前看過好幾遍《JavaScript高級程式設計》這一書,但始終沒有完完整整的看過一遍。從現在開始我會把它完整的啃一遍,每章節都記錄筆記,自己的心得,加油! 由於前三章的內容比較簡單,因此我會把它們放到一個章節裡面記錄學習歷程。 一、基本概念 1、JavaScrip與ECMAScript的關係 可以理解為JavaScript除了包含ECMAScript外,也包含DOM(文件物件模型),BOM( 瀏覽器物件模型) 2、標籤</p> <ul class=" list-paddingleft-2"><li>## 屬性: async defer charset type src <p> </p> </li></ul> <blockquote>#defer與async的區別:(只適用於外部腳本檔案)<p></p>沒有async或defer,<script>標籤依先後順序依序解析。瀏覽器會立即載入並執行指定的腳本,「立即」指的是渲染該 <p>script<code> 標籤之下的文件元素之前,也就是說不等待後續載入的文件元素,讀到就載入並執行。 </code></p>有async,載入和渲染後續文檔元素的過程將會和js的載入與執行並行進行(非同步);<p></p>有defer,載入後續文件元素的過程將會和js的載入並行進行(非同步),但js的執行要在所有的元素解析完成之後,DOMContentLoaded事件觸發之前完成<p></p> <p><img src="https://img.php.cn/upload/article/000/000/001/edcf103e52eb1199cb96ac9b445dc5a9-1.png" alt=""></p>藍色線代表網路讀取,紅色線代表執行時間,這兩個都是針對腳本的;綠色線代表HTML 解析。 <p></p>詳細解析可點選 <p></p> </blockquote> <ul class=" list-paddingleft-2"> <li>標籤位置:可放在<head>或<body>元素中內容的後面<p></p> </li> <li>#文件模式:(可分為混雜模式與標準模式)<p></p> </li> </ul> <blockquote>IE中瀏覽器模式與文件模式差異:<p></p>瀏覽器模式:影響的是瀏覽器版本以及IE的條件註解<p></p>文件模式:影響的是IE的排版引擎,DOM的渲染<p></p>詳細解析可點選 <p></p> </blockquote>3、資料型別<p></p> 5種簡單的資料型別:String、Number、Boolean、Null、Undefined 1種複雜資料型別:Object<p></p># typeof運算子偵測變數的資料類型,回傳字串<p> <span style="color: #ff00ff">注意:typeof null 回傳'object',null被認為是一個空的物件參考<span style="color: #ff0000"></span></span>## 變數未初始化、未宣告時typeof都回傳undefined</p> <p> ----- Boolean類型</p> <p></p> <table style="height: 137px; width: 648px; border-color: #6a684d; border-width: 0px; border-style: solid" border="0"><tbody>資料類型<tr align="center" valign="middle"> <td style="border-color: #008000; border-style: solid; border-width: 1px">轉換為true的值</td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> </tr> <tr align="center" valign="middle"> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> </tr> <tr align="center" valign="middle"> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td>轉換為false的值</tr> <tr align="center" valign="middle"> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td>Boolean<td style="border-color: #008000; border-style: solid; border-width: 1px"></td>true<td style="border-color: #008000; border-style: solid; border-width: 1px"></td>#false</tr> <tr align="center" valign="middle"> <td style="border-color: #008000; border-style: solid; border-width: 1px">##String</td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> </tr> <tr align="center" valign="middle"> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> <td style="border-color: #008000; border-style: solid; border-width: 1px"></td> </tr> </tbody></table>########################## #非空字串######空字串############Number#######任何非零數字值(包括無限大)#######0和NaN############Object######任何物件######null############Undefined######不適用######undefined#############<p> ----- Number型別</p> <p> <span style="color: #ff0000">js中浮點數的計算不準確,慎用~</span></p> <p> isFinite() 最大的數值之間 </p> <p> NaN 非數值,與任何都不相等,包括它本身 isNaN() </p> <p> 非數值轉換為數值:N) </p> <p> 非數值轉換為數值:N null) 0</p> <p> parseInt() parseFloat() 如果第一個字元不是數字字元或負號,則回傳NaN parseInt('')-NaSInto NInto -- String型別</p> <p> 轉字串的方法: toString() 除null與undefined外都有此方法 String()任何類型的值轉換為字串 加號運算子+'' </p> <p># ----- Object型別</p> <p> Object的每個實例都具有下列屬相和方法</p> <p> Constructor:儲存用於建立目前物件的函數</p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p><span style="color: #ff0000"></span></p> <p><span style="color: #ff0000"></span></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p><span style="color: #ff0000"></span></p> <p><span style="color: #ff0000"></span></p> <p></p> <p><span style="color: #ff0000"></span></p> <p> hasOwnProperty(propertyName):屬性在目前物件實例中是否存在<img src="https://img.php.cn/upload/article/000/000/001/edcf103e52eb1199cb96ac9b445dc5a9-2.png" alt=""></p> isPrototypeOf(object):傳入的物件是否為另一個物件的原型<p></p> Name propertyIsEnumerable(propertyIsIsEnumerable) for-in語句來枚舉<p><span style="max-width:90%"> toLocaleString()</span></p> toString():傳回物件的字串表示<p><span style="color: #ff0000"> valueOf():傳回物件的字串、數#」或值布林值表示</span></p>4、運算子<p><span style="color: #000000"> </span>var age = 10; var newAge = ++age; console.log(age); //11 console.log(newAge) ; //11 ++age先加後賦值,即先age+1,再將值賦給newAge </p> <p></p> <p> var age = 10; var newAge = age++; console.log( age); //11 console.log(newAge); //10 ++age先賦值後加,即先將值賦給newAge ,再age+1</p> <p></p> -----位元運算子<p></p> 位元非(~)即運算元的負值減1<p></p> 位元與(&)兩個數值對應位元都是1時才回傳1 ,任一位是0,結果都是0 <p></p> 按位或(|)有一位是1的情況下就返回1<p><span style="color: #ff0000"> 按位異或(^)兩個數值對應位上只有一個1時才返回1</span></p> 左移(<<)將數值的所有位向左移動指定的位數,多出的空位用0填充,不會影響操作數的符號位<p></p> 有符號的右移(>>)用符號位的值來填充空位###### 無符號的右移(>>>)用0填充空位#### ### ----- 布林運算子###### 邏輯非(!)###### 邏輯與(&&)短路運算符,即第一個運算元求值結果為false,就不會對第二個運算元求值 ###eg:console.log(1 && 2 && 3); //3######### 邏輯或(||)短路運算符,即第一個運算元求值結果為true,就不會對第二個運算元求值 ###eg:console.log(1 || 2 || 3); //1######### # ----- 相等運算子###### ###null >= 0 //true null == 0 //false 原因:關係運算子比較時會轉換成數值,相等運算子則不為數會######### ######### null == undefined //true null == 0 //false undefined == 0 //false #### =只比較值 ===既比較值,又比較類型############ 之前面試被問到的一道題目:var a = 1, b = 1; var c = {a: 1}, d = {a:1}; console.log(a == b); console.log(a === b); console.log(c == d); console.log(c === d); //true true false false############ 逗號表達式用於賦值時,總是會傳回表達式中的最後一項 eg:var num=(1,2,3 ); console.log(num); # for-in語句:可用來列舉物件的屬性,傳回屬性的先後順序可能會因瀏覽器而異###### break語句:退出循環,執行循環後面的語句 continue:跳出本次循環,執行下次循環######6、函數###### arguments物件可存取參數的數組,參數的值可透過arguments[0]…來取得,有length屬性###### ###未指定傳回值的函數傳回undefined值。這就是為什麼在chrome console中有時輸入一些指令會回傳undefined的原因~######### ###<p style="text-align: left"> </p> <p style="text-align: left"> </p>#