国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 對象轉(zhuǎn)換之toString和valueOf

eternalshallow / 1201人閱讀

摘要:本章主要關(guān)注中間兩個的結(jié)果。一類型轉(zhuǎn)換如果方法存在并且返回原始類型,返回的結(jié)果。其他情況,拋出錯誤。二類型當需要使用時,如等,解釋器會嘗試將對象轉(zhuǎn)換成對象。三轉(zhuǎn)換在進行布爾比較的時候,比如等等,會進行布爾轉(zhuǎn)換。

開始這個話題之前,我們先看一下下面的幾個例子:

parseInt(0.0000004)  // 4
![]==[] //true
["x","y"] == "x,y" //true
alert({name:"mofei"})  //"[object Object]"

關(guān)于parseInt()的方法可以查看我之前的文章。本章主要關(guān)注中間兩個的結(jié)果。

一.String類型轉(zhuǎn)換

1.如果toString方法存在并且返回“原始類型”,返回toString的結(jié)果。
2.如果toString方法不存在或者返回的不是“原始類型”,調(diào)用valueOf方法,如果valueOf方法存在,并且返回“原始類型”數(shù)據(jù),返回valueOf的結(jié)果。
3.其他情況,拋出錯誤。

二:Number類型

當需要使用Number時,( 如Math.sin() )等,解釋器會嘗試將對象轉(zhuǎn)換成Number對象。
通常有如下的情況會觸發(fā)Number轉(zhuǎn)換:
1.方法參數(shù)需要Number的時候,如Math.sin(obj)等
2.對比的時候,如 obj == "abc"
3.運算的時候,如 obj + 123
轉(zhuǎn)換規(guī)則如下:
1.如果valueOf存在,且返回“原始類型”數(shù)據(jù),返回valueOf的結(jié)果。
2.如果toString存在,且返回“原始類型”數(shù)據(jù),返回toString的結(jié)果。
3.其他情況報錯。

三:Boolean轉(zhuǎn)換

在進行布爾比較的時候,比如 if(obj) , while(obj)等等,會進行布爾轉(zhuǎn)換。
布爾轉(zhuǎn)換遵循如下規(guī)則:
值 布爾值
true/false true/false
undefined,null false
Number0,NaN 對應(yīng) false, 其他的對應(yīng) true
String"" 對應(yīng)false, 其他對應(yīng)true("0"對應(yīng)的是true)
Object true

舉個比較典型的例子:

[] == ![]  //true

// 首先第一步右邊的是邏輯判斷![],所以先轉(zhuǎn)成boolean
// [] == !true
// [] == false
// 左邊不是原始類型,嘗試把左邊轉(zhuǎn)成原始類型,變成
// "" == false
// 轉(zhuǎn)成Number
// 0 == 0

總的來說,使用方法就是為了轉(zhuǎn)換類型:對象類型->基本類型 然后進行基本類型的操作。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80803.html

相關(guān)文章

  • 進擊的 JavaScript(一) 類型轉(zhuǎn)換

    摘要:實際上,我們通常認為是自有類型的唯一成員。比較運算符的操作數(shù)可能是任意類型。結(jié)果只有,例得到操作值等價的布爾值真值為,假值為等同于,經(jīng)常稱為強制轉(zhuǎn)換。結(jié)果返回布爾值的用法是中唯一一個不等于任何值的包括它自己。 說起 js 類型轉(zhuǎn)換,都是頭疼吧,暈暈的,但是不行啊,這東西很重要滴! 基礎(chǔ)知識 JavaScript的數(shù)據(jù)類型分為六種,分別為null, undefined, boolean,...

    Scholer 評論0 收藏0
  • Javascript基礎(chǔ)-強制類型轉(zhuǎn)換(一)

    摘要:轉(zhuǎn)換為字符串規(guī)則如下圖代碼大致就是普通其他基本類型轉(zhuǎn)為字符串的話,就直接轉(zhuǎn)為其值的字符串表達形式,如果是基本類型的封裝對象,會先拆封,然后再轉(zhuǎn)為字符串,如果是普通對象,則會調(diào)用其內(nèi)部的值,如果是極大數(shù)和級小數(shù),將會進行一些轉(zhuǎn)化,具體規(guī) 轉(zhuǎn)換為字符串規(guī)則如下圖代碼: console.log(String(undefined)); // undefined console.log(Str...

    leon 評論0 收藏0
  • 魔幻語言 JavaScript 系列類型轉(zhuǎn)換、寬松相等以及原始值

    摘要:通過使用其構(gòu)造函數(shù),可以將一個值的類型轉(zhuǎn)換為另一種類型。如果使用兩次,可用于將該值轉(zhuǎn)換為相應(yīng)的布爾值。 編譯自:[1] + [2] – [3] === 9!? Looking into assembly code of coercion.全文從兩個題目來介紹類型轉(zhuǎn)換、寬松相等以及原始值的概念: [1] + [2] – [3] === 9 如果讓 a == true && a == fa...

    li21 評論0 收藏0
  • 從[]==![]為true來剖析JavaScript各種蛋疼的類型轉(zhuǎn)換

    摘要:將他們放在堆中是為了不影響棧的效率。所以簡單數(shù)據(jù)類型的值直接存放在棧中。可以對比上面那張圖默認是調(diào)用方法的依,于是等于空字符串。空字符串中國標準時間方法返回對象的原始值,可能是字符串數(shù)值或值等,看具體的對象。,需要兩個操作數(shù)同時轉(zhuǎn)為。 你是否在面試中遇到過各種奇葩和比較細節(jié)的問題? []==[] //false []==![] //true {}==!{} //false {}==![...

    Jeff 評論0 收藏0
  • Javascript基礎(chǔ)-強制類型轉(zhuǎn)換(二)

    摘要:所以無論還是都會進行類型轉(zhuǎn)換,唯一的區(qū)別,就是會置否而不會。這時候,肯定會有人問,假如說我有其他的數(shù)據(jù)類型呢,又不是數(shù)字又不是字符串,比如說數(shù)組啊,對象啊,布爾值啥的,那么如果是引用數(shù)據(jù)類型,則先轉(zhuǎn)為基本數(shù)據(jù)類型,再進行比較。 上一章主要講了轉(zhuǎn)換到數(shù)字,字符串和布爾類型的一些知識點,那么這一講接著上面的繼續(xù)講。 思考下面這個問題: console.log(+123); // 123 ...

    kk_miles 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<