2021-08-08學習筆記
今天周日,天氣晴躬窜,居家隔離第11天浇垦,閑來無聊,重溫js高級程序設計(第三章)荣挨;
生命的意義在于活到老男韧,學到老,否則生活只有工作默垄,毫無樂趣此虑,希望自己愛上這種記錄學習、工作的方式口锭;
3.4.5 Number
1朦前、浮點值
浮點值需要的內(nèi)存空間是保存整數(shù)值的2倍;(js解析時會先轉換為整數(shù)值如:var floatNum = 10.0; =>? 10? ? )
對于一些極大或極小的數(shù)值鹃操,可以用e表示法表示韭寸;(一般也不會用到這樣的浮點值)
永遠不要測試某個特定的浮點數(shù)值,會出現(xiàn)精度缺失荆隘;(如 0.1 + 0.2 != 0.3? ; 有時等于0.300000000000000000004)
2恩伺、數(shù)值范圍
數(shù)值返回 5e-324? ?1.7976931e+308,如果超出這個則為infinity、-infinity椰拒;
isFinite()
3晶渠、NaN
任何涉及NaN的操作(NaN/10 )都會返回NaN凰荚;
NaN與任何值都不相等,包括NaN本身??NaN==NaN褒脯; =》false
isNaN()=》不能轉換為數(shù)值的返回true便瑟;
isNaN('10')? ?false
isNaN(10)? ?false
isNaN('blue')? ?true
isNaN(NaN)? ?true
isNaN(true)? ?false (轉為數(shù)值1)
4、數(shù)值轉換
Number()番川、parseInt()到涂、parseFloat()
3.4.6 String類型
1、字符字面量((1)爽彤、轉義字符會被當做一個字符串來解析养盗;(2)、雙字節(jié)字符也不能返回準確的字符數(shù)目)
2适篙、字符串特點:
字符串一旦創(chuàng)建往核,值就不能改變;
3嚷节、轉換為字符串
toString()? ?/? ? ?String()? ? /? 加 ‘’拼接
null 和 undefined 沒有toString()方法
3.4.7 Object類型
Object其實就是一組數(shù)據(jù)與功能的結合聂儒。
Object的每個實例都具有以下屬性和方法;
1硫痰、constructor (構造函數(shù))2衩婚、hasOwnProperty(propertyName)? 3、isPropertypeoOf(object)
4效斑、propertyIsEnumerable(propertyName)? 5非春、toLocaleString()6、toString()? 7缓屠、valueOf()
3.5 操作符
3.5.1 一元操作符??
1奇昙、遞增 和遞減操作符(++ , --敌完,置前 储耐、置后)
2、一元加和減操作符 (主要用于基本的算術運算滨溉,也用于轉換數(shù)據(jù)類型)
3.5.2 位操作符(沒懂什湘,暫時不看)
3.5.3 布爾操作符(工作中常用)
1、邏輯非 (!)
首先是將操作數(shù)轉換為一個布爾值晦攒,然后對其取反闽撤;
!脯颜! 與 Boolean() 等價
2哟旗、邏輯與 (&&)
一錯則錯,短路操作
操作數(shù)不是布爾值時,邏輯與操作不一定返回布爾值热幔,而是遵循以下原則(具體見書:P45)
3、邏輯或 (||)
一對則對讼庇,短路操作
操作數(shù)不是布爾值時绎巨,邏輯或操作不一定返回布爾值,而是遵循以下原則(具體見書:P46)
3.5.4 乘性操作符
乘(*)蠕啄、除法(/)场勤、求模(求余 %)
3.5.5 加性操作符
1、加法(+)
注意:如果有一個操作符是字符串歼跟,則變成了字符串拼接
2和媳、減法(-)
如果操作數(shù)是字符串、布爾值哈街、null留瞳、undefined等類型,Number()函數(shù)(隱式轉換)先將其轉換為數(shù)值骚秦,然后再按其規(guī)則進行計算她倘;
如:var res1 = 5 - true;//? 4,true轉為數(shù)值1
var res2 = 5 - ''; // 5,''?轉為數(shù)值0??
var res3 = 5 -null; // 5,null轉為數(shù)值0??
3.5.6 關系操作符
大于(>)、小于(<)作箍,大于等于(>=)硬梁、小于等于(<=)
1、任何操作數(shù)與NaN關系比較時胞得,都是false荧止;
2、兩個字符串比較暗Unicode編碼比較阶剑;
3跃巡、一數(shù)值 和 一字符串,則字符串隱式轉換數(shù)值再比較个扰;等等還有其它比較規(guī)則具體見(P50)
3.5.7 相等操作符
1瓷炮、相等 和 不相等——先轉換再比較
2、全等 和 不全等——僅比較不轉換
3.5.8? 條件操作符
即三則表達式
3.5.9 賦值操作符
3.5.10 逗號操作符
3.6 語句
3.6.1? if語句??3.6.2 do-while語句? 3.6.3 while語句? 3.6.4 for語句???3.6.5 for-in 語句??
3.6.6? label語句(但很少用)
多發(fā)現(xiàn)循環(huán)嵌套的位置
3.6.7 break 和continue 語句? 3.6.8 此語句忘記? 3.6.8 switch語句(見P61)
3.7 函數(shù)
3.7.1 理解參數(shù)?arguments (p65)
函數(shù)體內(nèi)可以通過訪問arguments 對象來訪問函數(shù)參數(shù)數(shù)組递宅,arguments 對象只是與數(shù)組類似(但并不是數(shù)組)娘香,可以通過
arguments[0],?arguments[1] ...? ?;arguments .length 訪問參數(shù)的個數(shù);
?arguments對象可以與命名參數(shù)一起使用,命名參數(shù)不是必須的
arguments對象的長度是由傳入的參數(shù)個數(shù)決定的办龄,而不是定義函數(shù)時的命名的參數(shù)個數(shù)決定的烘绽;
3.7.2? 沒有重載
相同命名的函數(shù),會被最后一個函數(shù)覆蓋
我是楚念俐填,初念我心
這里有好多方法都是隱形轉換(自動類型轉換),如果是對象安接,先用valueof(),為NaN時,再toString()英融;