1. 程式人生 > >Javascript 學習筆記

Javascript 學習筆記

取值 num bject apt 1.2 存儲 else 邏輯運算 als

Javascript note

chapter one 1.1 值 js中有六種基本的值類型:number,string,boolean,object,function,undifined 1.2 number 計算機使用序列的方式存放數據到內存中,js使用固定長度為64的位序列來存儲數字值,對於二進制來說,64位可以表示2^64個數字 但實際上並沒有那麽大,因為這個64位的位序列需要表示負數,所以有一個符號位用來表示數字的正負;另外還需要一些位來存儲小數點位置的信息(具體的書中沒說明,有點復雜 暫不學習) 由於計算機處理浮點數的機制,計算整數時,計算結果會十分準確,但計算小數時就會有精度損失,因此計算小數都是近似值 1.2算術 ps:無需記熟運算符的優先級,不確定時只需要大膽加braces() 1.2.2特殊數字 +/-Infinity NaN 非數值 在Infinity-Infinity ,0/0等情況會出現 1.3字符串 在JS中 "" , ‘‘ 括起來的都是字符串 ps: 特殊情況 就是字符串裏有 "" ‘‘ 這個時候就要用到 轉義符 (和Java一樣啦)------‘\‘ 如 \n 為換行 如 "fuck ‘\n‘ " 需要寫成 "fuck \"\\n\"" 可以用‘+‘來連接 多個字符串 1.4 一元運算符 如 typeof sizeof 1.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.html 1.5.2邏輯運算符(&&,||, !)
註意一下 運算符優先級問題,簡單來說 || 優先級最低,其次是&&接著是比較運算符(<,>,==) *三元運算符 ? : 1.6 undefined null js特有的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 else js 與 java有點不同語法 是if() doWork; else if() doWork; else doWork; #章節習題

Javascript 學習筆記