摘要:文獻權威指南類型轉換章節對象到的具體代碼跟對象到的類似,只不過是方法的優先級變換了,跟規則是吻合的。
javascript是一門弱類型語言,不同的基礎數據之間的運算自己會進行一個相關的類型轉換,如常見的
var t = "test", b = t + 12 //"test12"
這些常見的類型轉換比較熟悉,但是涉及到關于對象與原始值之間的運算,類型轉換規則比較特殊
基礎知識點:var t = {a: 1, b: 2} t.toString() //"[object Object]" t.valueOf() //{a: 1, b: 2}即對象本身 var arr = [1,2,3,4] arr.toString() //"1,2,3,4"類似arr.join(",")
對象均有toString,valueOf兩個方法
轉換規則: 對象->String1:如果對象的toString方法存在,那么調用toString,若該對象返回的值為原始值,則將該原始值轉換為字符串返回(若該值不為字符串的話)
2:如果對象的toString方法返回的不是原始值,且valueOf方法存在,調用valueOf方法,若該對象返回的值為原始值,則將該原始值轉換為字符串返回(若該值不為字符串的話)
3:若對象的toString與valueOf方法返回的值均不為原始值,那么Throw TypeError的錯誤。
//規則1 function t(){ return 1 } console.log(t + 3) //"function t(){? return 1?}3" //修改toString方法 t.toString = function(){ return "bbbbbb" } console.log(t + 3) //"bbbbbb3" console.log(t.valueOf()) /* function t(){ return 1 } */ //不為原始值 //再次修改toString方法,使其返回的值不為原始值 t.toString = function(){ return {a:1} } console.log(t + 3) // Uncaught TypeError: Cannot convert object to primitive value //那么重寫valueOf方法 t.valueOf = function(){ return "ffffdffffd" } console.log(t + 3) //"ffffdffffd3" //這時,再修改toString t.toString = function(){ return "3333dd" } console.log( t + 3 ) //"3333dd3"對象->number
1:如果對象的valueOf方法存在,那么調用valueOf,若該對象返回的值為原始值,則將該原始值轉換為數字返回(若該值不為數字的話)
2:如果對象的valueOf方法返回的不是原始值,且toString方法存在,調用toString方法,若該對象返回的值為原始值,則將該原始值轉換為數字返回(若該值不為數字的話)
3:若對象的toString與valueOf方法返回的值均不為原始值,那么Throw TypeError的錯誤。
文獻:javascript權威指南 類型轉換章節
對象到number的具體代碼跟對象到string的類似,只不過是方法的優先級變換了,跟規則是吻合的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97865.html
摘要:如何讓根據拆箱轉換,以及的隱式轉換,可以如下寫為什么計算機中所有的數據都是以二進制存儲的,所以在計算機計算時要把數據先轉換成二進制進行計算,然后把計算結果轉換成十進制。會存在精度丟失問題和的二進制都是以無線循環的小數的二進制的二進制 本想著記筆記里,但是筆記里沒有分類,還是以文章的形式,當個人總結吧,這一篇就當作JS基礎篇的記錄吧,有修改的和新增的持續更新~ 關于JS的一些小技巧 1:...
摘要:數據類型中有種簡單數據類型也稱為基本數據類型和。在中非空字符串,非零數字,任意對象,都被認為。而空字符串,和,,認為是。用于表示整數和浮點數。標識符由數字字母下劃線美元符組成,但首字母不能是數字。變量方法對象命名推薦駝峰法。 JavaScript語法 一.語法簡介 因為JavaScript語法和Java等語法非常類似。所以只是簡單介紹一下。 大小寫 JavaScript是大小寫敏感的語...
摘要:是最特殊的類型,表示沒有意義的數,例如。十六進制數八進制數十進制數十六進制數對于部分情況,和存在分歧。例如,表示希臘字符關于字符串的轉換,其實核心就是函數,如果是數字型,還可以添加參數,使之變為二進制八進制十進制十六進制數。 雖然目前已經算是ES6的時代,然是ES5的尾巴仍在眾多框架中出現,JS我雖然通過視頻等方式學習,曾經做過項目,但是仍對部分細節和原理不了解,通過閱讀這本書,希望能...
摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...
摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...
閱讀 3639·2021-11-24 09:38
閱讀 3142·2021-11-15 11:37
閱讀 781·2021-11-12 10:36
閱讀 3547·2021-10-21 09:38
閱讀 3220·2021-09-28 09:36
閱讀 2420·2021-09-22 16:01
閱讀 4986·2021-09-22 15:09
閱讀 1210·2019-08-30 15:55