成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

數(shù)據(jù)類型轉(zhuǎn)換、==和===的判斷

MASAILA / 479人閱讀

不同數(shù)據(jù)類型做比較的時候,都需要進行數(shù)據(jù)類型的轉(zhuǎn)換!本文介紹常見數(shù)據(jù)類型轉(zhuǎn)換的方法,相等和嚴格相等的判斷規(guī)律

一、其他類型轉(zhuǎn)換成布爾類型 1、使用場景:

對于括號里的表達式,會被強制轉(zhuǎn)換為布爾類型

if ("") {
    console.log("empty")
}
2、轉(zhuǎn)換規(guī)則
類型 結(jié)果
Undefined false
Null false
Number +0, ?0, 或者 NaN 為 false, 其他為 true
String 空字符串為 false,其他都為 true
Object true
3、舉個栗子
if ("hello") {
    console.log("hello")
} //hello

// 題目2:如下代碼輸出什么?
if ("") {
    console.log("empty")
} //undefined

// 題目3:如下代碼輸出什么?
if (" ") {
    console.log("blank")
} //blank
// 題目4:如下代碼輸出什么?
if (+0.00) {
    console.log("blank")
} //undefined
4、小建議

寫代碼以后不要寫成下面這樣,不要再if內(nèi)放變量。變量轉(zhuǎn)換成布爾類型,會有很多狀態(tài)。可以寫成判斷類型的語句如(a==="")。
if(a){
console.log("blank")
}

二、其他元素的轉(zhuǎn)換成數(shù)字(toNumber) 1、使用場景:

判斷是否相等==

2、轉(zhuǎn)換規(guī)則
類型 結(jié)果
Undefined NaN
Null 0
Boolean ture -> 1, false -> 0
String “abc” -> NaN, “123” -> 123 , ""->0 , " "->0 空字符串和含有空白字符串的字符都為0
Object 先調(diào)用 .valueOf 方法獲取結(jié)果。如果沒定義,再嘗試調(diào)用 .toString方法獲取結(jié)果(數(shù)據(jù)運算符那篇文章有詳細介紹)
三、== 的判斷

經(jīng)驗就是把雙方轉(zhuǎn)換成數(shù)字

1、轉(zhuǎn)換規(guī)則
類型 結(jié)果 結(jié)果
Undefined Null true 特例記住 undefined == null
Number any x == toNumber(y)數(shù)字和任何數(shù)據(jù)相比,把其他數(shù)據(jù)轉(zhuǎn)換成數(shù)字在比較
Boolean (any) toNumber(x) == y 只要布爾類型先轉(zhuǎn)換成數(shù)字,再比較
Object String or Number toPrimitive(x) == y 對象(這里指廣義的對象,包括數(shù)組和函數(shù))與原始類型的值比較時,對象轉(zhuǎn)換成原始類型的值,再進行比較。
otherwise otherwise false
2、舉個例子
"" == 0  // true           false
" " == 0  //true 
"" == true  //false
" " == true  //false
!" " == true  // false  ,(!" "就是布爾類型的false)
"hello" == true  //false   "hello"轉(zhuǎn)換成數(shù)字為nan,true轉(zhuǎn)換成數(shù)字1
"0" == false  //true
"00" == false  //true
"0.00" == false  //true
undefined == null  //true
true== {}  //false  {}調(diào)用tostring為[object Object]
[] == true  //false  對象的toString方法默認返回[object Object]

var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == "[object Object]"  // false 自定義valueof之后,對象轉(zhuǎn)換數(shù)字返回的是1
四、嚴格相等 1、不同類型的值

如果兩個值的類型不同,直接返回false

2、復合類型值

兩個復合類型(對象、數(shù)組、函數(shù))數(shù)據(jù)比較時,不是比較它們的值是否相等,而是比較它們是否指向同一個地址。如果兩個變量引用同一個對象,則它們相等。

var v1 = {};
var v2 = v1;
v1 === v2 // true

反例

{} === {} // false
[] === [] // false
(function () {} === function () {}) // false
//比較兩個空對象、兩個空數(shù)組、兩個空函數(shù),結(jié)果都是不相等。
//原因是對于復合類型的值,嚴格相等運算比較的是,它們是否引用同一個內(nèi)存地址,
//而運算符兩邊的空對象、空數(shù)組、空函數(shù)的值,都存放在不同的內(nèi)存地址,結(jié)果當然是false
3、特例

例子1:NaN與任何值都不相等(包括自身)

NaN == NaN  // false
NaN === NaN  // false

例子2:正0等于負0

+0 === -0 // true

例子3:undefined和null與自身嚴格相等

undefined === undefined // true
null === null // true
var v1;
var v2;
v1 === v2 // true
//由于變量聲明后默認值是undefined,因此兩個只聲明未賦值的變量是相等的。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108632.html

相關(guān)文章

  • JS重要知識點記錄(一)

    摘要:包裝對象即,與數(shù)值字符串布爾值相對應(yīng)的三個原生對象。顯示類型轉(zhuǎn)換強制轉(zhuǎn)換即,顯示調(diào)用函數(shù)進行類型轉(zhuǎn)換。返回對象的字符串數(shù)值或布爾值表示,通常與返回的值相同。 一、類型與包裝對象 1. 類型 原始類型: number string boolean null undefined Symbol 對象類型: Object Array Function 原始類型(基本類型)和對象類型(引...

    HtmlCssJs 評論0 收藏0
  • js數(shù)據(jù)類型判斷轉(zhuǎn)換

    摘要:看到下面的題,是不是已經(jīng)蒙了,讀完這篇文章,就能順利通關(guān)了沒有輸出數(shù)據(jù)類型判斷數(shù)據(jù)類型數(shù)據(jù)類型一共有種,類型判斷特殊情況由此可以看出,不能區(qū)分數(shù)組,和對象運算符返回一個布爾值,表示對象是否為某個構(gòu)造函數(shù)的實例。 前言 無論筆試還是面試,總會問到數(shù)據(jù)類型和隱式轉(zhuǎn)換。今天徹底整理一下這塊的知識,希望對大家有幫助。 看到下面的題,是不是已經(jīng)蒙了,讀完這篇文章,就能順利通關(guān)了 console....

    xinhaip 評論0 收藏0
  • 【JavaScript 學以致用】值判斷以及類型轉(zhuǎn)換

    摘要:隱式強制類型轉(zhuǎn)換隱式強制類型轉(zhuǎn)換指的是一些特殊的操作的副作用來實現(xiàn)類型轉(zhuǎn)換,而非和等函數(shù)來實現(xiàn)值的類型轉(zhuǎn)換。下面幾種情況會發(fā)生布爾值的強制類型轉(zhuǎn)換語句中的天健判斷表達式。 引言 來到北京已經(jīng)有4個年頭了,做過一些測試、打雜、前端的工作之后,最后還是選擇了前端的工作?,F(xiàn)階段主要還是在寫業(yè)務(wù)代碼,代碼質(zhì)量,工作效率就顯得尤為重要?!緦W以致用】這個系列主要記錄一些平時工作、學習遇到的一些問題...

    AZmake 評論0 收藏0
  • 溫故js系列(1)-基本數(shù)據(jù)類型引用數(shù)據(jù)類型判斷&存儲訪問&類型轉(zhuǎn)換

    摘要:引用數(shù)據(jù)類型引用數(shù)據(jù)類型值指保存在堆內(nèi)存中的對象。訪問方式是按引用訪問。數(shù)據(jù)類型檢測操作符是檢測基本類型的最佳工具。未定義布爾值字符串數(shù)值對象或函數(shù)用于檢測引用類型,可以檢測到它是什么類型的實例。 前端學習:教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:數(shù)據(jù)類型 回味,無窮! 數(shù)據(jù)類型定義 數(shù)據(jù)類型分類 基本數(shù)據(jù)...

    jone5679 評論0 收藏0
  • JavaScript核心語法——數(shù)據(jù)類型

    摘要:原始類型分別有類型類型和類型三種。類型中存在一個特殊的值叫。也可以把其他類型的數(shù)據(jù)自動轉(zhuǎn)換為類型運算符運算符判斷原始類型語法結(jié)構(gòu)變量名稱。 數(shù)據(jù)類型 1.數(shù)據(jù)類型的概述;在JavaScript代碼中,能夠表示并且操作值的類型就叫做數(shù)據(jù)類型數(shù)據(jù)類型可以分成可變類型和不可變類型,可變類型的值是可以修改的。相反不可變類型的值是不可以修改的。數(shù)據(jù)類型還有原始類型(原始值)與引用類型(內(nèi)置對象)...

    wfc_666 評論0 收藏0

發(fā)表評論

0條評論

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