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

資訊專(zhuān)欄INFORMATION COLUMN

Javascript 基本概念(操作符)

Paul_King / 2110人閱讀

摘要:對(duì)于有符號(hào)的整數(shù),第一位是符號(hào)位正數(shù),負(fù)數(shù),后位表示數(shù)值。正數(shù)二進(jìn)制表示,沒(méi)有用到的位補(bǔ),如用二進(jìn)制表示為,第一位是符號(hào)位,后位均用補(bǔ)位,是有效位。按位非求反碼,本質(zhì)是求操作數(shù)的負(fù)值減一。

操作符 一元操作符

只能操作一個(gè)值的操作符叫一元操作符

++ and --

前置遞增和遞減,在語(yǔ)句求值之前改變數(shù)值的大小

后置遞增和遞減,在語(yǔ)句求值之后改變數(shù)值的大小

比如:

var age = 18;
var now = ++age - 10; // now = 9, age = 19
var now = age++ - 10;  // now = 9, age = 20

前置遞增、遞減和后置遞增、遞減可用于操作整數(shù)、浮點(diǎn)數(shù)、布爾值、字符串、對(duì)象,ECMAScript會(huì)根據(jù)前面提到過(guò)的各種數(shù)據(jù)類(lèi)型轉(zhuǎn)化成數(shù)值類(lèi)型的規(guī)則,先將值轉(zhuǎn)化為數(shù)值,然后加減1

一元+ and -

+放在數(shù)值前面,不會(huì)有任何影響,-使負(fù)數(shù)變?yōu)檎龜?shù),正數(shù)變?yōu)樨?fù)數(shù),當(dāng)一元+用在非數(shù)值前面,會(huì)試圖將它們轉(zhuǎn)化為數(shù)值,規(guī)則同之前講過(guò)的,而一元-用在非數(shù)值前面,會(huì)首先將它們轉(zhuǎn)化為數(shù)值,再變成相應(yīng)的負(fù)數(shù)。

位操作符

ECMAScript中的數(shù)值以IEEE-754 64 位格式存儲(chǔ),使用位操作符操作數(shù)值時(shí),現(xiàn)將該數(shù)值轉(zhuǎn)化為32位,然后進(jìn)行計(jì)算,最后再轉(zhuǎn)化成64位。
對(duì)于有符號(hào)的整數(shù),第一位是符號(hào)位(0正數(shù),1負(fù)數(shù)),后31位表示數(shù)值。

正數(shù)

二進(jìn)制表示,沒(méi)有用到的位補(bǔ)0,如18用二進(jìn)制表示為00000000000000000000000000010010,第一位是符號(hào)位,后27位均用0補(bǔ)位,10010是有效位。

負(fù)數(shù)

二進(jìn)制補(bǔ)碼表示,計(jì)算一個(gè)數(shù)值如-18的補(bǔ)碼需要三步:

求這個(gè)數(shù)值絕對(duì)值的二進(jìn)制,即00000000000000000000000000010010

求二進(jìn)制的反碼(0為1,1為0),即11111111111111111111111111101101

加一,即11111111111111111111111111101110

注意(-18).toString(2)的結(jié)果是-10010而不是11111111111111111111111111101110,默認(rèn)情況下ECMAScript中的整數(shù)都是有符號(hào)的,存在無(wú)符號(hào)整數(shù),無(wú)符號(hào)整數(shù)能表示的數(shù)值更大。
對(duì)非數(shù)值應(yīng)用一下講述的位操作,會(huì)首先進(jìn)行Number()轉(zhuǎn)化,位操作視NaN Infinity為0
所有的按位操作符的操作數(shù)都會(huì)被轉(zhuǎn)成補(bǔ)碼形式的有符號(hào)32位整數(shù)。

按位非 ~

求反碼,本質(zhì)是求操作數(shù)的負(fù)值減一。
為了方便驗(yàn)證,我們用五位表示

取反碼

abcde——1-a 1-b 1-c 1-d 1-e

負(fù)值減一

abcde——1-a 1-b 1-c 1-d 1-e——1-a 1-b 1-c 1-d 2-e
1-a 1-b 1-c 1-d 2-e - 1 = 1-a 1-b 1-c 1-d 1-e
可見(jiàn)是相等的。

按位與 &

將兩個(gè)數(shù)值按位對(duì)齊,如果同一位上均為1,則返回結(jié)果的這一位為1,否則為0。
比如:
45 & 67; //1
00000000000000000000000000101101
00000000000000000000000001000011
結(jié)果為:
00000000000000000000000000000001

按位或 |

將兩個(gè)數(shù)值按位對(duì)齊,如果同一位均為0,則返回結(jié)果的這一位為0,否則為1。

45 | 67; //111
0000000000000000000000000101101
0000000000000000000000001000011
結(jié)果為:
00000000000000000000000001101111

按位異或 ^

將兩個(gè)數(shù)值按位對(duì)齊,如果同一位數(shù)值不同,則返回結(jié)果的這一位為1,若相同,則為0。
45 ^ 67; //110
0000000000000000000000000101101
0000000000000000000000001000011
結(jié)果為:
00000000000000000000000001101110

左移 <<

向左移動(dòng)一定位數(shù),不改變符號(hào)位,空出來(lái)的位置補(bǔ)0(補(bǔ)0的個(gè)數(shù)與移動(dòng)位數(shù)相同)
45 ^ 5; //1440
0000000000000000000000000101101
結(jié)果為:
00000000000000000000010110100000

右移 >>

45 >> 5; //1
0000000000000000000000000101101
結(jié)果為:
00000000000000000000000000000001
向右移動(dòng)一定位數(shù),不改變符號(hào)位,空出來(lái)的位置補(bǔ)0(補(bǔ)0的個(gè)數(shù)與移動(dòng)位數(shù)相同)

無(wú)符號(hào)右移 >>>

向右移動(dòng)一定位數(shù),改變符號(hào)位,空出來(lái)的位置補(bǔ)0(補(bǔ)0的個(gè)數(shù)與移動(dòng)位數(shù)相同)

正數(shù)

>>(用于填充空位的0與符號(hào)位相同,等于填充了符號(hào)位)

負(fù)數(shù)

無(wú)符號(hào)右移操作符會(huì)把負(fù)數(shù)的二進(jìn)制碼當(dāng)成正數(shù)的二進(jìn)制碼
-64>>>25; // 127
11111111111111111111111111000000
結(jié)果為:
00000000000000000000000001111111

布爾操作符
邏輯非 !

可以操作任何數(shù)據(jù)類(lèi)型,首先對(duì)其取布爾值,然后取反

布爾值
空字符串、0、undefined、null、NaN true
對(duì)象、非0、非空字符串 false

!!相當(dāng)于Boolean可以返回這個(gè)值真正對(duì)應(yīng)的布爾值。

邏輯與 &&

邏輯與有兩個(gè)操作數(shù),只有true && true才會(huì)返回true,可以操作任何數(shù)據(jù)類(lèi)型。
如果有一個(gè)或兩個(gè)操作數(shù)不是布爾值,邏輯與不一定返回布爾值,規(guī)則如下:

如果第一個(gè)是對(duì)象,返回第二個(gè)操作數(shù)

如果第二個(gè)是對(duì)象,在第一個(gè)求值結(jié)果為true時(shí)返回第二個(gè)

如果第一個(gè)是null,返回null

如果第一個(gè)是undefined,返回undefined

如果第一個(gè)是NaN,返回NaN

邏輯與是短路操作,如果第一個(gè)操作數(shù)可以決定求值結(jié)果,就不會(huì)對(duì)第二個(gè)操作數(shù)求值,當(dāng)?shù)谝粋€(gè)操作數(shù)求值為false,則表達(dá)式結(jié)果為false。

邏輯或 ||

邏輯或有兩個(gè)操作數(shù),只有false || false才會(huì)返回false,可以操作任何數(shù)據(jù)類(lèi)型。
如果有一個(gè)或兩個(gè)操作數(shù)不是布爾值,邏輯或不一定返回布爾值,規(guī)則如下:

如果第一個(gè)操作數(shù)是對(duì)象,則返回第一個(gè)操作數(shù)

如果第一個(gè)對(duì)象的求值結(jié)果為false,則返回第二個(gè)操作數(shù)

如果兩個(gè)操作數(shù)都是null,則返回null

如果兩個(gè)操作數(shù)都是NaN,則返回NaN

如果兩個(gè)操作數(shù)都是undefined,則返回undefined

邏輯或也是短路操作符,如果第一個(gè)求值結(jié)果為true,則返回true
我們可以利用邏輯或的這一行為來(lái)避免為變量賦null 或undefined 值。

var myObject = preferredObject || backupObject;

如果preferredObjectnull or undefined, 會(huì)將backupObject的值賦給myObject

乘性操作符

如果參加乘性操作的操作符不是數(shù)值,會(huì)調(diào)用Number()將其轉(zhuǎn)為數(shù)值,這一過(guò)程在這一節(jié)中不再贅述。

乘法 *

乘法遵循以下規(guī)則:

如果操作數(shù)都是數(shù)值,執(zhí)行常規(guī)的乘法運(yùn)算

有一個(gè)操作數(shù)是NaN,則結(jié)果是NaN

Infinity * 0; // NaN

Infinity與非0(包括無(wú)窮)相乘,結(jié)果為無(wú)窮

除法 /

除法遵循以下規(guī)則:

如果操作數(shù)都是數(shù)值,執(zhí)行常規(guī)的除法運(yùn)算

有一個(gè)操作數(shù)是NaN,則結(jié)果是NaN

Infinity/Infinity; // NaN

0/0; // NaN

非零的數(shù)除以0,結(jié)果為無(wú)窮

無(wú)窮被非零的數(shù)相除,結(jié)果為無(wú)窮

求模 %

求模遵循以下規(guī)則:

如果操作數(shù)都是數(shù)值,執(zhí)行常規(guī)的求模運(yùn)算

無(wú)窮大除以有限大的數(shù)值,余數(shù)運(yùn)算結(jié)果為`NaN

有限大的數(shù)值除以0,余數(shù)運(yùn)算結(jié)果為NaN

Infinity除以Infinity,余數(shù)運(yùn)算結(jié)果為NaN

有限大的數(shù)值除以無(wú)窮大,余數(shù)運(yùn)算結(jié)果為被除數(shù)

被除數(shù)是0,除數(shù)不為NaN或0,結(jié)果為0

5 / 0 % 5; // NaN
5 % 0; // NaN
5 / 0 % (5 / 0); // NaN
5 % (5 / 0); // 5
0 % 0; // NaN
0 % (5 / 0); //0
0 % 5; //0
0 % (5 % 0); //NaN
加性運(yùn)算符
加法 +

如果兩個(gè)操作數(shù)都是數(shù)值,則遵循以下規(guī)則:

Infinity + Infinity; // Infinity

-Infinity + (-Infinity); // -Infinity

-Infinity + Infinity; // NaN

+0 + (+0); // +0

-0 + (-0); //-0

-0 + (+0); // +0

如果有操作符是字符串,則遵循以下規(guī)則:

如果兩個(gè)都是字符串,則將兩個(gè)字符串拼接起來(lái)

如果只有一個(gè)是字符串,則把非字符操作數(shù)轉(zhuǎn)化為字符串,拼接起來(lái)

忽視加法操作中的數(shù)據(jù)類(lèi)型是ECMAScript 編程中最常見(jiàn)的一個(gè)錯(cuò)誤。再來(lái)看一個(gè)例子:
var num1 = 5;
var num2 = 10;
var message = "The sum of 5 and 10 is " + num1 + num2;
alert(message); // "The sum of 5 and 10 is 510"
減法 -

減法運(yùn)算遵循以下規(guī)則:

如果都是數(shù)值,執(zhí)行常規(guī)減法操作

如果有一個(gè)是NaN,則結(jié)果是NaN

Infinity - Infinity; // NaN

-Infinity - (-Infinity); // NaN

Infinity - (-Infinity); //Infinity

-Infinity - Infinity; //-Infinity

+0 - (+0); // +0

+0-(-0); // -0

-0 - (-0); // +0

關(guān)系操作符

包括< > <= >=,遵循如下規(guī)則:

如果都是數(shù)值,進(jìn)行數(shù)值大小比較

如果都是字符串,則比較字符編碼值,有如下規(guī)則:

如果字符串相等返回值0

如果第一個(gè)字符和參數(shù)的第一個(gè)字符不等,結(jié)束比較,返回他們之間的編碼差值

如果第一個(gè)字符和參數(shù)的第一個(gè)字符相等,則以第二個(gè)字符和參數(shù)的第二個(gè)字符做比較,以此類(lèi)推,直至比較的字符或被比較的字符有一方全比較完,這時(shí)就比較字符的長(zhǎng)度。

如果一個(gè)是數(shù)值,則另一個(gè)轉(zhuǎn)化成數(shù)值,然后比較

對(duì)象執(zhí)行valueof(),如果沒(méi)有,調(diào)用其toString(),然后按上述規(guī)則比較

舉一些例子:

"23" < "3"; //true
"23" < 3; //false
"B" < "a"; //true,大寫(xiě)字母的字符編碼全部小于小寫(xiě)字母的字符編碼
"a" < 3; // false,"a"轉(zhuǎn)化為NaN,NaN參與任何操作都返回NaN
"a" >= 3; //false
相等操作符
相等 == 和不相等 !=

先轉(zhuǎn)換操作數(shù),再比較相等性,轉(zhuǎn)換的規(guī)則如下:

如果有一個(gè)操作數(shù)是布爾型,將其轉(zhuǎn)化為數(shù)值

字符串與數(shù)值比較,字符串轉(zhuǎn)化為數(shù)值

對(duì)象與非對(duì)象比較,調(diào)用對(duì)象的valueof()得到基本類(lèi)型,再按以上規(guī)則比較

比較規(guī)則如下:

null == undefined; //true

不會(huì)轉(zhuǎn)換undefinednull

NaN與任何操作數(shù)相等性比較,返回false,不相等性比較,返回true,包括NaN

如果都是對(duì)象,看是否指向同一對(duì)象

舉一些例子:

undefined == 0; //false
null == 0; //false
NaN == NaN; //false
NaN != NaN; //false
true == 1; //true
false == 0; //true
"NaN" == NaN; // false
全等 === 和不全等 !==

不轉(zhuǎn)換操作數(shù),直接比較,比較規(guī)則除了第一條均相同

undefined === null ; // false

可以看出全等比相等要安全,不會(huì)強(qiáng)制轉(zhuǎn)換。

條件運(yùn)算符

variable = boolean_expression ? true_value : false_value;
boolean_expression 若為true,返回true_value,若為false,返回false_value

賦值操作符 =

將右邊的值賦給左邊

復(fù)合賦值操作符:

*=

+=

-=

/=

%=

<<=

>>=

>>>=

num = num + 10;相當(dāng)于num += 10;

逗號(hào)操作符
聲明變量

var a, b, c;

賦值

`a = (0, 1, 2, 3); //3, 只最后一項(xiàng)有效

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

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

相關(guān)文章

  • 基礎(chǔ)鞏固:JavaScript基礎(chǔ)總結(jié)(基本概念篇)

    摘要:基礎(chǔ)鞏固基礎(chǔ)總結(jié)使用已經(jīng)好幾年了,由于工作主要是做服務(wù)端開(kāi)發(fā),在工作中逐漸發(fā)現(xiàn)的使用范圍原來(lái)越廣泛。這里要注意,務(wù)必將基礎(chǔ)部分掌握牢靠,磨刀不誤砍柴功,只有將基礎(chǔ)部分掌握并建立起系統(tǒng)的知識(shí)體系,在后面學(xué)習(xí)衍生的其他模式才能游刃有余。 基礎(chǔ)鞏固:JavaScript基礎(chǔ)總結(jié) 使用JavaScript已經(jīng)好幾年了,由于工作主要是做服務(wù)端開(kāi)發(fā),在工作中逐漸發(fā)現(xiàn)JavaScript的使用范圍原...

    YuboonaZhang 評(píng)論0 收藏0
  • 復(fù)習(xí)Javascript專(zhuān)題(一):基本概念部分

    摘要:一數(shù)據(jù)類(lèi)型基本類(lèi)型引用類(lèi)型類(lèi)型判斷返回結(jié)果未定義布爾值字符串?dāng)?shù)值對(duì)象或者函數(shù)拓展堆棧兩種數(shù)據(jù)結(jié)構(gòu)堆隊(duì)列優(yōu)先,先進(jìn)先出由操作系統(tǒng)自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。 一、數(shù)據(jù)類(lèi)型 基本類(lèi)型:`Null Boolean String Undefined Number(NB SUN)` 引用類(lèi)型:`Array Function Object` 類(lèi)型判斷:typeof 返回結(jié)果...

    LiangJ 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)(第3版)第3章

    摘要:為此,本章將主要按照第版定義的介紹這門(mén)語(yǔ)言的基本概念,并就第版的變化給出說(shuō)明。在嚴(yán)格模式下,中的一些不確定的行為將得到處理,而且對(duì)某些不安全的操作也會(huì)招聘錯(cuò)誤。這是為不破壞語(yǔ)法而特意選定的語(yǔ)法。支持嚴(yán)格模式的瀏覽器包括和。 基本概念本章內(nèi)容語(yǔ)法、數(shù)據(jù) 類(lèi)型、流控制語(yǔ)句、函數(shù)符何語(yǔ)言的核心都盡然會(huì)描述這門(mén)語(yǔ)言最基本的工作原理。而捆 的內(nèi)容通常都要滬深股市這門(mén)語(yǔ)言的語(yǔ)法、操作符、數(shù)據(jù) 類(lèi)型...

    tracy 評(píng)論0 收藏0
  • 004-讀書(shū)筆記-JavaScript高級(jí)程序設(shè)計(jì) 基本概念(下)

    摘要:操作符,會(huì)將數(shù)值改變正數(shù)變成負(fù)數(shù)負(fù)數(shù)變成正數(shù)。同時(shí),也說(shuō)明了,使用兩個(gè)邏輯非操作符和的操作結(jié)果相同。操作符得到的是余數(shù)。不相等操作符有兩種。 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第三章。 1.操作符 1-1 一元操作符 遞增和遞減操作符 遞增和遞減操作符有兩個(gè) ++ 和 --。一元操作符使用的時(shí)候,可以前置也可以后置。由于兩個(gè)操作方式類(lèi)似,先只說(shuō)明 ...

    nevermind 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)》筆記:基本概念

    摘要:一寫(xiě)在前面最近重讀高級(jí)程序設(shè)計(jì),總結(jié)下來(lái),查漏補(bǔ)缺。但這種影響是單向的修改命名參數(shù)不會(huì)改變中對(duì)應(yīng)的值。這是因?yàn)閷?duì)象的長(zhǎng)度是由傳入的參數(shù)個(gè)數(shù)決定的,不是由定義函數(shù)時(shí)的命名參數(shù)的個(gè)數(shù)決定的。實(shí)際改變會(huì)同步,改變也會(huì)同步 一、寫(xiě)在前面 最近重讀《JavaScript高級(jí)程序設(shè)計(jì)》,總結(jié)下來(lái),查漏補(bǔ)缺。 二、JS簡(jiǎn)介 2.1 JS組成 ECMAscript:以ECMA-262為基礎(chǔ)的語(yǔ)言,由...

    ygyooo 評(píng)論0 收藏0
  • 前端練級(jí)攻略(第二部分)

    摘要:是文檔的一種表示結(jié)構(gòu)。這些任務(wù)大部分都是基于它。這個(gè)實(shí)踐的重點(diǎn)是把你在前端練級(jí)攻略第部分中學(xué)到的一些東西和結(jié)合起來(lái)。一旦你進(jìn)入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進(jìn)行操作。它是在前端系統(tǒng)像今天這樣復(fù)雜之前編寫(xiě)的。 本文是 前端練級(jí)攻略 第二部分,第一部分請(qǐng)看下面: 前端練級(jí)攻略(第一部分) 在第二部分,我們將重點(diǎn)學(xué)習(xí) JavaScript 作為一種獨(dú)立的語(yǔ)言,如...

    BWrong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Paul_King

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<