摘要:如果被標(biāo)志為,則會進(jìn)行下面的操作來轉(zhuǎn)換輸入的值如果輸入的值已經(jīng)是個(gè)原始值,則直接返回它。否則,拋出異常。如果被標(biāo)志為,則轉(zhuǎn)換操作的第二步和第三步的順序會調(diào)換。參數(shù)結(jié)果布爾值被轉(zhuǎn)換為轉(zhuǎn)換為數(shù)字無需轉(zhuǎn)換字符串由字符串解析為數(shù)字。
隱式轉(zhuǎn)換實(shí)質(zhì) ToPrimitive():將值轉(zhuǎn)換為原始值
JavaScript 引擎內(nèi)部的抽象操作 ToPrimitive()有著這樣的簽名:
ToPrimitive (input,PreferredType?)
可選參數(shù) PreferredType 可以是 Number 或者 String,它只代表了一個(gè)轉(zhuǎn)換的偏好,轉(zhuǎn)換結(jié)果不一定必須是這個(gè)參數(shù)所指的類型,但轉(zhuǎn)換結(jié)果一定是一個(gè)原始值。如果 PreferredType 被標(biāo)志為 Number,則會進(jìn)行下面的操作來轉(zhuǎn)換輸入的值(59.1):
如果輸入的值已經(jīng)是個(gè)原始值,則直接返回它。
否則,如果輸入的值是一個(gè)對象。則調(diào)用該對象的 valueof ()方法。如果 valueOf()方法的返回值是一個(gè)原始值,則返回這個(gè)原始值。
否則,調(diào)用這個(gè)對象的 toString()方法。如果 tostring()方法的返回值是一個(gè)原始值,則返回這個(gè)原始值。
否則,拋出 TypeError 異常。
如果 PreferredType 被標(biāo)志為 string,則轉(zhuǎn)換操作的第二步和第三步的順序會調(diào)換。如果沒有 PreferredType 這個(gè)參數(shù),則 preferredrype 的值會按照這樣的規(guī)則來自動設(shè)置:Date 類型的對象會被設(shè)置為 string,其它類型的值會被設(shè)置為 Number.
ToNumber():將值轉(zhuǎn)換為數(shù)字下面的表格解釋了 ToNumber()是如何將原始值轉(zhuǎn)換成數(shù)字的。
參數(shù) | 結(jié)果 |
---|---|
undefined | NaN |
null | +0 |
布爾值 | true 被轉(zhuǎn)換為 1, false 轉(zhuǎn)換為+0 |
數(shù)字 | 無需轉(zhuǎn)換 |
字符串 | 由字符串解析為數(shù)字。例如,"324"被轉(zhuǎn)換為 324 |
如果輸入的值是一個(gè)對象,則會首先會調(diào)用 roPrimitive (obj, Number)將該對象轉(zhuǎn)換為原始值,然后在調(diào)用 roNumber()將這個(gè)原始值轉(zhuǎn)換為數(shù)字。
ToString():將值轉(zhuǎn)換為字符串下面的表格解釋了 ToString()是如何將原始值轉(zhuǎn)換成字符串的。
參數(shù) | 結(jié)果 |
---|---|
undefined | "undefined" |
null | "null" |
布爾值 | “true"或者"false" |
數(shù)字 | 數(shù)字作為字符串,比如。"1.765*" |
字符串 | 無需轉(zhuǎn)換 |
如果輸入的值是一個(gè)對象,則會首先會調(diào)用 toPrimitive (obj,String)將該對象轉(zhuǎn)換為原始值,然后再調(diào)用 roString()將這個(gè)原始值轉(zhuǎn)換為字符串。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94472.html
摘要:下面先看看涉及到的幾個(gè)函數(shù)以及他們的轉(zhuǎn)換規(guī)則,這個(gè)是需要記憶的內(nèi)容類型轉(zhuǎn)換需要使用到的函數(shù)對于布爾值用到的是對于數(shù)值,用到的是當(dāng)然還有但是對于隱式類型轉(zhuǎn)換的時(shí)候,調(diào)用的是前者。 javaScript類型轉(zhuǎn)換規(guī)則 javaScript的類型轉(zhuǎn)換其實(shí)一直是很多前端開發(fā)人員很迷的地方,一會兒這里要轉(zhuǎn)換,一會兒那里又要轉(zhuǎn)換,總之就是一個(gè)大寫的迷,因?yàn)樗[式類型轉(zhuǎn)換的地方實(shí)在是太多了。 但其實(shí)...
摘要:中的基本數(shù)據(jù)類型有種,引用數(shù)據(jù)類型則是指除了上述基本數(shù)據(jù)類型以外的所有值,比如隱式類型轉(zhuǎn)換加法的隱式轉(zhuǎn)換轉(zhuǎn)換為原始值當(dāng)需要轉(zhuǎn)換為原始值時(shí),引擎內(nèi)部會進(jìn)行抽象操作。 showImg(https://segmentfault.com/img/bVbqjVM); 基本運(yùn)算規(guī)則 +的使用有兩種情況 當(dāng)+連接兩個(gè)變量或值時(shí)即為二元運(yùn)算符,比如a + b,當(dāng)+在變量或值前面時(shí),則為一元運(yùn)算符,比...
摘要:相對于顯式使用,隱式轉(zhuǎn)換則更加簡潔。隱式轉(zhuǎn)換為布爾值將其他類型值隱式轉(zhuǎn)換為布爾值是我們最常用的一種轉(zhuǎn)換。在以下場景中,都是進(jìn)行判斷,而只要傳入的值不是布爾值,都會通過隱式類型轉(zhuǎn)換轉(zhuǎn)為布爾值。原文地址阿木木的博客與隱式鴨子類型轉(zhuǎn)換 showImg(https://segmentfault.com/img/remote/1460000017309581); 前言 說實(shí)話,JavaScrip...
摘要:與此相對,強(qiáng)類型語言的類型之間不一定有隱式轉(zhuǎn)換。三為什么是弱類型弱類型相對于強(qiáng)類型來說類型檢查更不嚴(yán)格,比如說允許變量類型的隱式轉(zhuǎn)換,允許強(qiáng)制類型轉(zhuǎn)換等等。在中,加性運(yùn)算符有大量的特殊行為。 從++[[]][+[]]+[+[]]==10?深入淺出弱類型JS的隱式轉(zhuǎn)換 本文純屬原創(chuàng)? 如有雷同? 純屬抄襲? 不甚榮幸! 歡迎轉(zhuǎn)載! 原文收錄在【我的GitHub博客】,覺得本文寫的不算爛的...
摘要:棧區(qū)由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。屬性返回對創(chuàng)建此對象的構(gòu)造函數(shù)的引用。所有的和都是宿主對象參考高級程序設(shè)計(jì)堆和棧的概念和區(qū)別全面解析中的數(shù)據(jù)類型與類型轉(zhuǎn)換 數(shù)據(jù)類型 數(shù)據(jù)類型劃分 javascript中定義了6中基本數(shù)據(jù)類型(原始值類型),和一種復(fù)雜數(shù)據(jù)類型(引用類型),所謂復(fù)雜類型,其本質(zhì)是由無序的名值對(key:val...
閱讀 3369·2021-11-22 15:22
閱讀 2894·2021-10-12 10:12
閱讀 2190·2021-08-21 14:10
閱讀 3856·2021-08-19 11:13
閱讀 2871·2019-08-30 15:43
閱讀 3256·2019-08-29 16:52
閱讀 481·2019-08-29 16:41
閱讀 1468·2019-08-29 12:53