摘要:因為是弱類型語言,所以它會在任何可能的情形下對變量進行強制類型轉換。內置類型的構造函數調用內置類型的構造函數時,是否使用關鍵字將表現得大不相同。傳遞字面值或非對象值也會造成強制類型轉換的現象。最好的方法就是顯示地將值轉換為,或三種類型之一。
因為 Javascript 是弱類型語言,所以它會在任何可能的情形下對變量進行強制類型轉換。
// These are true new Number(10) == 10; // Number.toString() is converted // back to a number 10 == "10"; // Strings gets converted to Number 10 == "+10 "; // More string madness 10 == "010"; // And more isNaN(null) == false; // null converts to 0 // which of course is not NaN // These are false 10 == 010; 10 == "-10";
為了避免以上例子中的問題,十分建議使用嚴格相等符號 ===。雖然這個方法可以解決大部分普遍的問題,但是由于 Javascript 的弱類型原因,還是會造成許多其他的問題。
內置類型的構造函數 Constructor調用內置類型的構造函數時,是否使用關鍵字 new 將表現得大不相同。
new Number(10) === 10; // False, Object and Number Number(10) === 10; // True, Number and Number new Number(10) + 0 === 10; // True, due to implicit conversion
使用 new 將創造一個新的 Number 對象,而不使用 new,則表現得更像是一個轉換器。
傳遞字面值或非對象值也會造成強制類型轉換的現象。
最好的方法就是顯示地將值轉換為 String,Number 或 Boolean 三種類型之一。
"" + 10 === "10"; // true
通過與一個空字符串相加可以很容易轉換為字符串類型。
轉換為數字 Number+"10" === 10; // true
使用一個加號就可以將值轉換為數字類型。
轉換為布爾值 Boolean轉換為數字的應用可以參考這個提問:
http://segmentfault.com/q/1010000000476683
使用兩次 not 操作符,可以將一個值轉換為布爾值。
!!"foo"; // true !!""; // false !!"0"; // true !!"1"; // true !!"-1" // true !!{}; // true !!true; // true參考
http://bonsaiden.github.io/JavaScript-Garden/#types.casting
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78098.html
摘要:由于中復雜的類型轉換機制,將會使得由此產生的錯誤變得難以追蹤。此外,類型的強制轉換會對性能也造成一定的影響,例如,當一個字符串與數字進行比較時,會被強制轉換為數字。詳解一下中的比較參考 Javascript 有兩種方法來判斷兩種值是否相等。 相等符號 相等符號由兩個等號組成: ==Javascript 是弱類型語言。這就意味著相等符號為了比較兩個值將會強制轉換類型。 ...
因為最近有博友反饋我的博文是直接翻譯的參考鏈接內的內容,所以我在這里要說明一下,以免引起不必要的誤會。 首先,我很喜歡 segmentfault 的交流和學習的氛圍,所以我很愿意在這里跟各位 SFer 交流學習心得,相互學習,共同進步。 第二,我做技術方面的工作不久,所以學習經歷也不是很長,但是我發現寫博客,總結自己的學習心得是個很好的學習習慣,至少對于我個人而言,我于此收益頗豐,所以我決定堅持一...
摘要:并沒有類繼承模型,而是使用原型對象進行原型式繼承。我們舉例說明原型鏈查找機制當訪問一個對象的屬性時,會從對象本身開始往上遍歷整個原型鏈,直到找到對應屬性為止。原始類型有以下五種型。此外,試圖查找一個不存在屬性時將會遍歷整個原型鏈。 Javascript 并沒有類繼承模型,而是使用原型對象 prototype 進行原型式繼承。 盡管人們經常將此看做是 Javascript 的一個缺點,然...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 2987·2021-11-23 09:51
閱讀 1011·2021-09-26 09:55
閱讀 3959·2021-09-22 14:58
閱讀 1486·2021-09-08 09:35
閱讀 1082·2021-08-26 14:16
閱讀 886·2019-08-23 18:17
閱讀 2067·2019-08-23 16:45
閱讀 704·2019-08-23 15:55