標籤:sci 數字 work 資料 包含 control lan 字串的比較 str
Javascript note
chapter one 1.1 值 js中有六種基本的實值型別:number,string,boolean,object,function,undifined1.2 number電腦使用序列的方式存放資料到記憶體中,js使用固定長度為64的位序列來儲存數字值,對於二進位來說,64位可以表示2^64個數字但實際上並沒有那麼大,因為這個64位的位序列需要表示負數,所以有一個符號位用來表示數位正負;另外還需要一些位來儲存小數點位置的資訊(具體的書中沒說明,有點複雜 暫不學習)由於電腦處理浮點數的機制,計算整數時,計算結果會十分準確,但計算小數時就會有精度損失,因此計算小數都是近似值1.2算術ps:無需記熟運算子的優先順序,不確定時只需要大膽加braces()1.2.2特殊數字+/-InfinityNaN 非數值 在Infinity-Infinity ,0/0等情況會出現1.3字串在JS中 "" , ‘‘ 括起來的都是字串ps: 特殊情況 就是字串裡有 "" ‘‘ 這個時候就要用到 轉義符 (和Java一樣啦)------‘\‘ 如 \n 為換行 如 "fuck ‘\n‘ " 需要寫成 "fuck \"\\n\"" 可以用‘+‘來串連 多個字串1.4 一元運算子 如 typeof sizeof1.5 boolean只有兩種取值 true false特別注意 字串的比較機制(java.lang.String是不允許使用 < , >等 operator 來比較的),在js中是按unicode值(首字母)來比較的實質上就是按照Unicode值來比較的http://www.imkevinyang.com/2009/02/%E5%AD%97%E7%AC%A6%E7%BC%96%E8%A7%A3%E7%A0%81%E7%9A%84%E6%95%85%E4%BA%8B%EF%BC%88ascii%EF%BC%8Cansi%EF%BC%8Cunicode%EF%BC%8Cutf-8%E5%8C%BA%E5%88%AB%EF%BC%89.html1.5.2邏輯運算子(&&,||, !)注意一下 運算子優先順序問題,簡單來說 || 優先順序最低,其次是&&接著是比較子(<,>,==)*三元運算子 ? :1.6 undefined nulljs特有的undefined(感覺是) 在js中和null差別不大1.7自動類型轉換js會自動把運算子兩端的值轉換成自己期望的類型,稱為 類型強制轉換
1 console.log(5 +"6" );
<!--56-->2 console.log(5 -"3");
<!--2-->3 console.log(5 +‘1‘);
<!--51-->4 console.log(5 * ‘2‘);
<!--10-->
但有些值js無法轉換,如NaN , 字串 ,此時就會產生NaN ,包含 NaN的運算結果仍然是NaN,
相同類型的值之間使用"=="進行比較時,運算結果很好預測(只要兩端沒有NaN搞事,只要兩個值相同,則返回true),
1 console.log(NaN == 5);
<!--false-->2 console.log(NaN == undefined);
<!--false-->3 console.log(NaN == "");
<!--false-->4 console.log(NaN == null);
<!--false-->
另外,當使用一個值和boolean 的false比較時,js的比較規則是,0,"",NaN 都等價於false,其他都等價於true如果運算子兩端存在null 或者undefined ,那隻有兩端都是null 或者 undefined 才為 true順便一提,嚴格比較符 ‘===‘ ,則要求完全一致才返回true
console.log(null == undefined);
<!--true-->
console.log(null === undefined);
<!--false-->
由於當operator兩端的實值型別不同,js的轉換規則比較複雜,請事先確定兩端實值型別一致至於使用相等運算子會不會對後續代碼造成意外影響,答案是有可能會。 #程式結構##control flow ### if elsejs 與 java有點不同文法是if()doWork;else if()doWork;elsedoWork;#章節習題
Javascript 學習筆記