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

資訊專欄INFORMATION COLUMN

JavaScript中的一元運算符

fnngj / 1467人閱讀

摘要:中有種常用的一元運算符,本文做簡單羅列和說明。第二個過程是相同的,返回。進行,依然是以為轉換標準。在金絲雀版本的瀏覽器和中,結果符合預期。這是為什么呢原因是在中會將以開始,結束的語句外面包裹一層,就變成了,結果就符合預期。

JavaScript中有9種常用的一元運算符,本文做簡單羅列和說明。

加運算符 +

將操作數轉換為數字
function與object大部分情況都會被轉換為NaN
除非對象擁有一個名為valueOf函數值且其函數有返回值

+{
  valueOf: function(){
    return "0xFF"
  }
}
//returns 255
減運算符 -

也是將操作數轉數字,同時變為負數

邏輯取反運算符 !

在取反前,會進行隱式類型轉換

遞增 ++ 和遞減 --

將操作數遞增或遞減,注意位置放到前面和后面會有區別,如同C語言中一樣

按位非運算符 ~

對任一數值x進行按位非運算操作的結果為-(x+1)

typeof

操作數放到typeof的后面,會返回當前操作數的類型,對于數值類型可以準確返回,對于引用類型,Function會返回"function",其他都只會返回"object"

delete

刪除數組或對象中特定索引的值
刪除成功時會返回true,刪除失敗時返回false

// 刪除變量
var hi = 1;
delete hi;          // returns false
console.log(hi);    // returns 1

// 刪除函數
function yo(){ };
delete yo;           // returns false
console.log(yo);     // returns function foo(){ }

// 刪除對象
var pub = {bar: "1"}
delete pub           // returns false
console.log(pub);    // returns {bar: "1"}

//刪除數組
var code = [1,1,2,3,5]
delete code          // returns false
console.log(code);   //  [1,1,2,3,5]

對于數組的索引刪除:

// 刪除數組中的某個值
var lol=[20,30,40];
console.log(lol.length);     // returns 3
delete lol[2]                // returns true
console.log(lol);            // returns [ 20, 30,  ]
console.log(lol[2]);         // returns undefined
console.log(lol.length);     // returns 3
void

丟棄表達式的返回值,而返回undefined
使用方式有void 表達式,void (表達式) 兩種

附:加法的隱式裝箱

在加法的過程中,首先把等號左右兩邊進行了求原值ToPrimitive()操作,然后如果兩個原值只要有一個是String類型,就把兩個原值都進行轉化字符串ToString()操作,進行字符串拼接;否則把兩個原值都進行轉化數字ToNumber()操作,進行數字相加。
ToPrimitive(input [, PreferredType])
將input轉換為原始值,PreferredType為可選參數,只接受Number或String,用來設置轉換偏好
一般情況下,對Date求原值,則PreferredType是String,其他Object對象均為Number

PreferredType轉換策略

PreferredType是String,則先調用toString(),結果不是原始值,則再調用valueOf(),還不是原始值的話則拋出錯誤

PreferredType是Number,則先調用valueOf(),再調用toString()

練習
[] + [] // ""

進行ToPrimitive,兩個都是Array對象,不是Date對象,所以以Number為轉換標準,所以先調用valueOf(),結果還是[ ],不是原始值,所以繼續調用toString(),結果是“”原始值,將“”回。第二個[ ]過程是相同的,返回“”。加號兩邊結果都是String類型,所以進行字符串拼接,結果是“”。

[] + {} // "[object Object]"

進行ToPrimitive,依然是以Number為轉換標準。
[ ]的結果是“”。
{ }先調用valueOf(),結果是{ },不是原始值,所以繼續調用toString(),結果是“[object Object]”,是原始值,將“[object Object]”返回。
加號兩邊結果都是String類型,所以進行字符串拼接,結果是“[object Object]”。

{} + [] // 0

這道題按照上一題的步驟,講道理的話,結果應該還是“[object Object]”,但結果卻如人意料——顯示的答案是0!
這是什么原因呢?原來{ } + [ ]被解析成了{ };+[ ],前面是一個空代碼塊被略過,剩下+[ ]就成了一元運算。[ ]的原值是””, 將””轉化成Number結果是0。

{} + {} // "[object Object][object Object]"

在金絲雀版本的chrome瀏覽器和node中,結果符合預期。
結果是”object Object”。
在普通版本的chrome瀏覽器中結果是NaN。
這是為什么呢?原因是在node中會將以“{”開始,“}”結束的語句外面包裹一層( ),就變成了({ } + { }),結果就符合預期。而普通版本的chrome依然會解析成{};+{},結果就變成了NaN

參考

developer.mozilla Bitwise operators
JavaScript Unary Operators: Simple and Useful
js隱式裝箱-ToPrimitive

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94369.html

相關文章

  • JavaScript 一元正號算符

    摘要:一元正號介紹一元正號運算符位于其操作數前面,計算其操作數的數值,如果操作數不是一個數值,會嘗試將其轉換成一個數值。一元正號施加于,結果還是。 本文適合JavaScript初學者。 一元正號介紹 一元正號運算符(+)位于其操作數前面,計算其操作數的數值,如果操作數不是一個數值,會嘗試將其轉換成一個數值。 盡管一元負號也能轉換非數值類型,但是一元正號是轉換其他對象到數值的最快方法,也是最推...

    chanjarster 評論0 收藏0
  • 從 ++[[]][+[]]+[+[]]==10? 深入淺出弱類型 JS 的隱式轉換

    摘要:與此相對,強類型語言的類型之間不一定有隱式轉換。三為什么是弱類型弱類型相對于強類型來說類型檢查更不嚴格,比如說允許變量類型的隱式轉換,允許強制類型轉換等等。在中,加性運算符有大量的特殊行為。 從++[[]][+[]]+[+[]]==10?深入淺出弱類型JS的隱式轉換 本文純屬原創? 如有雷同? 純屬抄襲? 不甚榮幸! 歡迎轉載! 原文收錄在【我的GitHub博客】,覺得本文寫的不算爛的...

    miya 評論0 收藏0
  • javascript —— 算符

    摘要:算術運算符中的算術操作主要通過算術運算符來實現,算術運算符包括一元算術運算符和二元算術運算符兩種。一元算術運算符一元算術運算符用于一個單獨的操作數,并產生一個新值。 算術運算符 javascript中的算術操作主要通過算術運算符來實現,算術運算符包括一元算術運算符和二元算術運算符兩種。 一元算術運算符 一元算術運算符用于一個單獨的操作數,并產生一個新值。在javascript中,一元運...

    Ethan815 評論0 收藏0
  • JavaScript字符串轉數字的5種方法及其陷阱

    摘要:例如注意字符串中的負十六進制數字是一個特殊情況,如果你用解析,結果是不正確的。轉換十六進制數時要小心,如果你不知道要轉換對象的類型,不要使用。字符串轉換為數字的方式總結負十六進制數字符串轉換為數字時。 摘要 :JavaScript 是一個神奇的語言,字符串轉數字有 5 種方法,各有各的坑法! 原文: Converting Strings to Number in Javascript...

    shengguo 評論0 收藏0
  • 爬蟲不得不學之 JavaScript 入門篇

    摘要:為數值固定的表示法,用來表示整數和浮點數的。無論你寫何種進制,它的存儲還是以二進制來存儲的,所以這樣就弄成了浮點數的存儲精確度,浮點數只能精確到位小數。關系運算符關系運算符有和。賦值運算符賦值運算符有六個。 現在的爬蟲越來越難了,不再和之前的那樣,隨便抓個包就可以找到相關的 url ,然后 post 一下或者 get 一下數據就出來了。還有一個可能就是可能你以前用來學習的爬蟲網站太簡單...

    tracymac7 評論0 收藏0

發表評論

0條評論

fnngj

|高級講師

TA的文章

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