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

資訊專欄INFORMATION COLUMN

JavaScript中的一元運算符

fnngj / 1461人閱讀

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

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

加運算符 +

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

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

也是將操作數(shù)轉(zhuǎn)數(shù)字,同時變?yōu)樨?fù)數(shù)

邏輯取反運算符 !

在取反前,會進(jìn)行隱式類型轉(zhuǎn)換

遞增 ++ 和遞減 --

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

按位非運算符 ~

對任一數(shù)值x進(jìn)行按位非運算操作的結(jié)果為-(x+1)

typeof

操作數(shù)放到typeof的后面,會返回當(dāng)前操作數(shù)的類型,對于數(shù)值類型可以準(zhǔn)確返回,對于引用類型,F(xiàn)unction會返回"function",其他都只會返回"object"

delete

刪除數(shù)組或?qū)ο笾刑囟ㄋ饕闹?br>刪除成功時會返回true,刪除失敗時返回false

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

// 刪除函數(shù)
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"}

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

對于數(shù)組的索引刪除:

// 刪除數(shù)組中的某個值
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

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

附:加法的隱式裝箱

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

PreferredType轉(zhuǎn)換策略

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

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

練習(xí)
[] + [] // ""

進(jìn)行ToPrimitive,兩個都是Array對象,不是Date對象,所以以Number為轉(zhuǎn)換標(biāo)準(zhǔn),所以先調(diào)用valueOf(),結(jié)果還是[ ],不是原始值,所以繼續(xù)調(diào)用toString(),結(jié)果是“”原始值,將“”回。第二個[ ]過程是相同的,返回“”。加號兩邊結(jié)果都是String類型,所以進(jìn)行字符串拼接,結(jié)果是“”。

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

進(jìn)行ToPrimitive,依然是以Number為轉(zhuǎn)換標(biāo)準(zhǔn)。
[ ]的結(jié)果是“”。
{ }先調(diào)用valueOf(),結(jié)果是{ },不是原始值,所以繼續(xù)調(diào)用toString(),結(jié)果是“[object Object]”,是原始值,將“[object Object]”返回。
加號兩邊結(jié)果都是String類型,所以進(jìn)行字符串拼接,結(jié)果是“[object Object]”。

{} + [] // 0

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

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

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

參考

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

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

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

相關(guān)文章

  • JavaScript 一元正號算符

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

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

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

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

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

    Ethan815 評論0 收藏0
  • JavaScript字符串轉(zhuǎn)數(shù)字的5種方法及其陷阱

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

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

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

    tracymac7 評論0 收藏0

發(fā)表評論

0條評論

fnngj

|高級講師

TA的文章

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