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