摘要:無法將操作數(shù)轉(zhuǎn)換為數(shù)字的情況下總是返回。字符串其他將其他轉(zhuǎn)換為字符串,并進(jìn)行拼接操作。因?yàn)椴僮鲾?shù)中沒有字符串,所以參考一的轉(zhuǎn)換規(guī)則。重要提示請不要忘記推薦和收藏搜索操作數(shù)隱式類型轉(zhuǎn)換
JavaScript是一個對類型非常容忍的語言,在我們編寫代碼的過程中,會看到許多代碼直接對不同類型的操作數(shù)進(jìn)行操作。有的時候這會給我們的代碼的編寫帶來很大的方便,而有些時候這些不加檢查的類型比較也會給我們的代碼帶來一些隱患。在調(diào)試的時候,我們?nèi)绻麑avaScript自動執(zhí)行的類型轉(zhuǎn)換有比較清楚的了解的話,很不容易發(fā)現(xiàn)問題的所在點(diǎn)。
PS: 對象→基本類型的轉(zhuǎn)換規(guī)則請參考《JavaScript高級編程指南》
一、減號、乘號、除號、取模...減號、乘號、除號、取模等操作符是比較單純的操作符。
這些操作符會嘗試將他們的操作數(shù)轉(zhuǎn)換為數(shù)字(使用Number()),如果操作數(shù)沒法轉(zhuǎn)換為數(shù)字的話,他們的結(jié)果就是NaN。
NaN與任何數(shù)進(jìn)行這些操作,結(jié)果都是NaN
// Demo1.html var obj = { valueOf: function() { return 18; } }; var obj2 = { valueOf: function() { return 19; } }; console.log( 1 - "2", // -1 "32" - "22", // 10 obj % 4, // 2 obj * obj2, // 342 "99b" * 10 // NaN );二、大于、小于、大于等于、小于等于
同(一),但是對于兩個操作數(shù)均是字符串的時候&無法轉(zhuǎn)換時的返回值會有不同。
當(dāng)兩個操作數(shù)均是字符串的時候,它會執(zhí)行大家熟悉的字符串比較,即從左到右依次比較每一個字符的ASCII碼,若出現(xiàn)符合操作符的情況,則返回true,否則返回false。
無法將操作數(shù)轉(zhuǎn)換為數(shù)字的情況下總是返回false。
Boolean(NaN) == false
// Demo2.html var obj = { valueOf: function() { return 18; } }; console.log( 1 <= "2", // true "1" <= "a", // true obj >= "17" // true );三、==、!=
這兩個運(yùn)算符在大部分上面都是與(一)相同的,不同的是:
字符串 op 字符串:不會進(jìn)行類型轉(zhuǎn)換,直接比較。
對象 op 對象:引用都指向同一個對象才為true。
// Demo3.html var obj = { valueOf: function() { return 18; } }; var obj2 = { valueOf: function() { return 19; } }; console.log( obj == obj2, // false "XD" == "XD", // true obj == 18, // true obj2 == "19" // true );
四、加號(+)溫馨提示:null == undefined // true
當(dāng)沒有特別指定的時候參考(一),比如對象+對象等,但有如下幾種例外情況:
字符串 + 字符串:進(jìn)行字符串拼接操作。
字符串 + 其他:將其他轉(zhuǎn)換為字符串,并進(jìn)行拼接操作。
// Demo4.html var obj = { toString: function() { return "18s"; }, valueOf: undefined }; var obj2 = { toString: function() { return "19b"; }, valueOf: function() { return 19; } }; console.log( obj + obj2, // "18s19" obj2 + obj2 // 38 );
DEMO注意上面obj + obj2的結(jié)果不是"18s19b"。因?yàn)椴僮鲾?shù)中沒有字符串,所以參考(一)的轉(zhuǎn)換規(guī)則。
[重要提示]請不要忘記推薦和收藏 (╯‵□′)╯︵ ┴─┴
git clone https://github.com/JasonKid/fezone.git
搜索 操作數(shù)隱式類型轉(zhuǎn)換
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/91640.html
摘要:強(qiáng)制類型轉(zhuǎn)換作為程序員,你一定獲取過當(dāng)前系統(tǒng)的時間戳。比如對于變量而言,此次強(qiáng)制類型轉(zhuǎn)換是隱式的。然而則是非常典型的顯式強(qiáng)制類型轉(zhuǎn)換。隱式強(qiáng)制類型轉(zhuǎn)換大部分被詬病的強(qiáng)制類型轉(zhuǎn)換都是隱式強(qiáng)制類型轉(zhuǎn)換。 JavaScript 強(qiáng)制類型轉(zhuǎn)換 作為 JavaScript 程序員,你一定獲取過當(dāng)前系統(tǒng)的時間戳。在 ES5 引入 Date.now() 靜態(tài)方法之前,下面這段代碼你一定不會陌生: v...
摘要:看下面的代碼和會對操作數(shù)執(zhí)行條件判斷,如果操作數(shù)不是布爾值,會先執(zhí)行類型轉(zhuǎn)換后再執(zhí)行條件判斷。大家記住這個規(guī)則布爾值如果與其他類型進(jìn)行抽象比較,會先用將布爾值轉(zhuǎn)換為數(shù)字再比較。 在上一篇中我們聊過了 JS 類型轉(zhuǎn)換的規(guī)則和我發(fā)現(xiàn)的一些常見書籍中關(guān)于類型轉(zhuǎn)換的一些小錯誤,當(dāng)碰到顯示類型轉(zhuǎn)換的時候大家可以按照這些規(guī)則去拆解出答案。但 JS 中存在一些很隱晦的隱式類型轉(zhuǎn)換,這一篇就來談下我對...
摘要:下面先看看涉及到的幾個函數(shù)以及他們的轉(zhuǎn)換規(guī)則,這個是需要記憶的內(nèi)容類型轉(zhuǎn)換需要使用到的函數(shù)對于布爾值用到的是對于數(shù)值,用到的是當(dāng)然還有但是對于隱式類型轉(zhuǎn)換的時候,調(diào)用的是前者。 javaScript類型轉(zhuǎn)換規(guī)則 javaScript的類型轉(zhuǎn)換其實(shí)一直是很多前端開發(fā)人員很迷的地方,一會兒這里要轉(zhuǎn)換,一會兒那里又要轉(zhuǎn)換,總之就是一個大寫的迷,因?yàn)樗[式類型轉(zhuǎn)換的地方實(shí)在是太多了。 但其實(shí)...
摘要:具體的行為取決于參數(shù)的類型。說到,就不得不提一下方法,方法自帶隱式類型轉(zhuǎn)換,該方法在測試其參數(shù)之前,會先調(diào)用方法將其轉(zhuǎn)換為數(shù)字。全等運(yùn)算符會先進(jìn)行數(shù)據(jù)類型判斷,并且不會發(fā)生隱式類型轉(zhuǎn)換。 類型轉(zhuǎn)換還不行?還非得隱式?這是什么高級玩意? 廢話不多說,我們先上一盤?,額,不對,先看一個例子吧。 3 + true 實(shí)際上在大多數(shù)編程語言中,都會認(rèn)為上面這個表達(dá)式是錯誤的。因?yàn)椴紶柋磉_(dá)式與算術(shù)...
摘要:所謂裝箱轉(zhuǎn)換,正是把基本類型轉(zhuǎn)換為對應(yīng)的對象,他是類型轉(zhuǎn)換中一種相當(dāng)重要的種類。拆箱轉(zhuǎn)換在標(biāo)準(zhǔn)中,規(guī)定了函數(shù),它是對象類型到基本類型的轉(zhuǎn)換即,拆箱轉(zhuǎn)換。拆箱轉(zhuǎn)換會嘗試調(diào)用和來獲得拆箱后的基本類型。 JavaScript隱式類型轉(zhuǎn)換 基本數(shù)據(jù)類型 ECMAScript 一共定義了七種 build-in types,其中六種為 Primitive Value,Null, Undefined...
摘要:我們再來回顧下文首提出的這個比較運(yùn)算,首先為對象,則調(diào)用函數(shù)將其轉(zhuǎn)化為字符串對于右側(cè)的,首先會進(jìn)行顯式類型轉(zhuǎn)換,將其轉(zhuǎn)化為。 JavaScript 運(yùn)算符規(guī)則與隱式類型轉(zhuǎn)換詳解 從屬于筆者的現(xiàn)代 JavaScript 開發(fā):語法基礎(chǔ)與工程實(shí)踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運(yùn)算中的規(guī)則與隱式類型轉(zhuǎn)換;本文中涉及的參考資料全部聲明在了JavaSc...
閱讀 2074·2021-11-15 17:57
閱讀 739·2021-11-11 16:54
閱讀 2589·2021-09-27 13:58
閱讀 4068·2021-09-06 15:00
閱讀 950·2021-09-04 16:45
閱讀 3505·2019-08-30 15:56
閱讀 1784·2019-08-30 15:53
閱讀 1605·2019-08-30 14:12