成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

js-數(shù)據(jù)運算

sf190404 / 2521人閱讀

摘要:跳過第二個運算子的機(jī)制,被稱為短路有些程序員喜歡用它取代結(jié)構(gòu)等價于運算符可以多個連用返回第一個布爾值為的表達(dá)式的值。

一、運算符概述 1、定義

JavaScript中運算符主要用于連接簡單表達(dá)式,組成一個復(fù)雜的表達(dá)式

2、運算符類別

算數(shù)運算符

賦值表達(dá)式

比較表達(dá)式

布爾運算符

位運算符

二、算數(shù)運算符 1、加法運算符(Addition):x + y

加法運算符是在運行時決定,到底是執(zhí)行相加,還是執(zhí)行連接。也就是說,運算子的不同,導(dǎo)致了不同的語法行為,這種現(xiàn)象稱為“重載”(overload)

(1)、在兩個操作數(shù)都是數(shù)字的時候,會做加法運算

console.log(2+4);//6

(2)、兩個參數(shù)都是字符串或在有一個參數(shù)是字符串的情況下,會把另外一個參數(shù)轉(zhuǎn)換為字符串做字符串拼接

console.log("2"+"4");//"24"
"3" + 4 + 5 // "345"
3 + 4 + "5" // "75"

(3)、在參數(shù)有對象的情況

3.1首先自動調(diào)用對象的valueOf方法

一般來說,對象的valueOf方法總是返回對象自身,,也可自定義

3.2再自動調(diào)用對象的toString方法,將其轉(zhuǎn)為字符串(如果valueOf方法直接返回一個原始類型的值,就不會調(diào)用tostring

對象的toString方法默認(rèn)返回[object Object],也可自定義

var obj = { p: 1 };
obj + 2 // "[object Object]2"

3.3自定義valueOf方法或toString方法,得到想要的結(jié)果

var obj = {
  valueOf: function () {
    return 1;
  }
};

obj + 2 // 3
var obj = {
  toString: function () {
    return "hello";
  }
};

obj + 2 // "hello2"

3.4 Date對象特例

如果運算子是一個Date對象的實例,那么會優(yōu)先執(zhí)行toString方法。

var obj = new Date();
obj.valueOf = function () { return 1 };
obj.toString = function () { return "hello" };

obj + 2 // "hello2"

(4)、在只有一個字符串參數(shù)和+號的時候會嘗試將其轉(zhuǎn)換為數(shù)字,轉(zhuǎn)換失敗輸出NaN

console.log(+"4");//4 
+"ffffdffffd"
NaN
2、其他算術(shù)運算符

對于其他運算符,在運算前都強(qiáng)制轉(zhuǎn)換數(shù)字,再運算。對象就調(diào)用valueOf或者toString,如果不能轉(zhuǎn)換的,輸出NaN
減法運算符(Subtraction): x - y
乘法運算符(Multiplication): x * y
除法運算符(Division):x / y
余數(shù)運算符(Remainder):x % y
自增運算符(Increment):++x(先加后賦值) 或者 x++(先賦值后加)
自減運算符(Decrement):--x 或者 x--
求負(fù)運算符(Negate):-x
數(shù)值運算符(Convert to number): +x

三、賦值運算符

賦值運算符用于給變量賦值,最常見的賦值運算符,當(dāng)然就是等號,表達(dá)式x=y表示將y賦值給x。除此之外,JavaScript還提供其他11個賦值運算符。

運算時從右到左,如var z=y=x;

x += y // 等同于 x = x + y
x -= y // 等同于 x = x - y
x *= y // 等同于 x = x * y
x /= y // 等同于 x = x / y
x %= y // 等同于 x = x % y
x >>= y // 等同于 x = x >> y
x <<= y // 等同于 x = x << y
x >>>= y // 等同于 x = x >>> y
x &= y // 等同于 x = x & y
x |= y // 等同于 x = x | y
x ^= y // 等同于 x = x ^ y
四、比較運算符

比較運算符比較兩個值,然后返回一個布爾值,表示是否滿足比較條件。
JavaScript提供了8個比較運算符。

1、 == 比較兩個值是否相等

相等運算符(==)會將它們轉(zhuǎn)換成同一個類型,再用嚴(yán)格相等運算符進(jìn)行比較。

2、=== 嚴(yán)格相等,比較它們是否為同一個值(數(shù)據(jù)類型也要相同)
內(nèi)容較多,多帶帶寫了一篇文章去說相等和嚴(yán)格相等

3、!=不相等

4、!== 嚴(yán)格不相等
它的算法就是先求嚴(yán)格相等運算符的結(jié)果,然后返回相反值。

5、其他比較運算符(< 小于 <= 小于或等于 > 大于 >= 大于或等于)

5.1同為字符串按照Unicode 順序進(jìn)行比較
首先比較首字符的 Unicode 碼點,如果相等,再比較第二個字符的 Unicode 碼點,以此類推
5.2不全為字符串的比較,分成以下兩種情況
1)原始類型值(數(shù)值、字符串、布爾值)

如果兩個運算子都是原始類型的值,則是先轉(zhuǎn)成數(shù)值再比較

5 > "4" // true
// 等同于 5 > Number("4")
// 即 5 > 4

true > false // true
// 等同于 Number(true) > Number(false)
// 即 1 > 0

2 > true // true
// 等同于 2 > Number(true)
// 即 2 > 1

2)有一方或者雙方為對象的比較
調(diào)用valueOf方法和toString方法,轉(zhuǎn)為原始類型的值,再進(jìn)行比較

var x = [2];
x > "11" // true
// 等同于 [2].valueOf().toString() > "11"
// 即 "2" > "11"
{ x: 2 } >= { x: 1 } // true
// 等同于 { x: 2 }.valueOf().toString() >= { x: 1 }.valueOf().toString()
// 即 "[object Object]" >= "[object Object]"
五、布爾運算符 1、! 取反運算符

對數(shù)據(jù)取反,得到的都是布爾值!

2、&& 且運算符

1)用途:且運算符(&&)往往用于多個表達(dá)式的求值。

2) 運算規(guī)則是:如果第一個運算子的布爾值為true,則返回第二個運算子的值(注意是值,不是布爾值);如果第一個運算子的布爾值為false,則直接返回第一個運算子的值,且不再對第二個運算子求值。

var x = 1;
(1 - 1) && ( x += 1) // 0
x // 1

3)跳過第二個運算子的機(jī)制,被稱為“短路”,有些程序員喜歡用它取代if結(jié)構(gòu)

if (i) {
  doSomething();
}

// 等價于

i && doSomething();

4)運算符可以多個連用
返回第一個布爾值為false的表達(dá)式的值。如果所有表達(dá)式的布爾值都為true,則返回最后一個表達(dá)式的值。

true && "foo" && "" && 4 && "foo" && true
// ""

1 && 2 && 3
// 3
3、|| 或運算符

1)運算規(guī)則:
如果第一個運算子的布爾值為true,則返回第一個運算子的值,且不再對第二個運算子求值;如果第一個運算子的布爾值為false,則返回第二個運算子的值

"t" || "f" // "t"
"" || "f" // "f"

2)或運算符可以多個連用
這時返回第一個布爾值為true的表達(dá)式的值。如果所有表達(dá)式都為false,則返回最后一個表達(dá)式的值。

false || 0 || "" || 4 || "foo" || true
// 4

false || 0 || ""
// ""
4、condition? true case : false case 三元條件運算符

1)簡介:三元條件運算符由問號(?)和冒號(:)組成,分隔三個表達(dá)式。
2)規(guī)則:如果第一個表達(dá)式的布爾值為true,則返回第二個表達(dá)式的值,否則返回第三個表達(dá)式的值。

console.log(true ? "T" : "F");
六、位運算符

就是把兩個做位運算的值,都按照二進(jìn)制一位一位的按照符號規(guī)則進(jìn)行運算
位運算符只對整數(shù)起作用,如果一個運算子不是整數(shù),會自動轉(zhuǎn)為整數(shù)后再執(zhí)行

1、或運算(or):
符號為|,表示兩個二進(jìn)制位中有一個為1,則結(jié)果為1,否則為0。
0000 0010 | 0000 0001 就等0000 0011(3)

2、與運算(and):
符號為&,表示兩個二進(jìn)制位都為1,則結(jié)果為1,否則為0。
0000 0010 & 0000 0001 就等0000 0000(0)

3、否運算(not):
符號為~,表示將一個二進(jìn)制位變成相反值。
~ 0000 0010 就等于1111 1101
4、異或運算(xor):
符號為?,表示兩個二進(jìn)制位中有且僅有一個為1時,結(jié)果為1,否則為0。

5、左移運算(left shift):符號為<<

1(數(shù)值)<<1(左移的位數(shù)) //2
1<<2 //4
1<<3 //8

6、右移運算(right shift):符號為>>

8>>1 //4

7、帶符號位的右移運算(zero filled right shift):符號為>>>

七、其他運算符 1、()小括號

圓括號是一種運算符,它有兩種用法:
1)如果把表達(dá)式放在圓括號之中,作用是求值
2)如果跟在函數(shù)的后面,作用是調(diào)用函數(shù)。

2、逗號運算符

逗號運算符用于對兩個表達(dá)式求值,并返回后一個表達(dá)式的值。

var x = 0;
var y = (x++, 10);
x // 1
y // 10
八、運算符的優(yōu)先級

運算符的優(yōu)先級,建議還是查看mdn。全部記住很難,簡單理一下順序,加深直覺(不準(zhǔn)確喲)
自增 > 邏輯非>typeof > 加減乘除 > 判斷大小(><=) >邏輯運算(與或)>三元條件運算符 >賦值 >,

1、typeof的優(yōu)先級相當(dāng)?shù)母?/strong>,比加減乘除神馬的都高,所以雖然是操作符,在在復(fù)雜表達(dá)式的時候我們還是習(xí)慣加括號,看個例子

 typeof 2*3;//NaN
 typeof (2*3);//"number"
 typeof 2+3;// "number3"

2、 ++、--是右結(jié)合的操作符(優(yōu)先級最高的幾個都是右結(jié)合),而且比加減乘除優(yōu)先級高。同時自增、自減運算符的運算數(shù)得是左值(可以放在賦值符號左邊的值),而不能是常數(shù)

 var a=0,b=0;
 a+++b;//0
 a;//1,a++優(yōu)先級比++b高,所以相當(dāng)于(a++)+b
 b;//0

3、賦值運算符的優(yōu)先級相當(dāng)?shù)牡?/strong>

 a = b == c; //等同于a = (b==c)

4、邏輯非!也在優(yōu)先級隊列的前端,比加減乘除高,但邏輯與、邏輯或優(yōu)先級很低,不如加減乘除

 !2*0; //0, 等價于(!2)*0

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

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

相關(guān)文章

  • JS的{} + {}與{} + []的結(jié)果是什么?

    摘要:對于與的設(shè)計在中所設(shè)計的純對象類型的與方法,它們的返回如下方法返回值對象本身。與三個強(qiáng)制轉(zhuǎn)換函數(shù),所對應(yīng)的就是在標(biāo)準(zhǔn)中的三個內(nèi)部運算轉(zhuǎn)換的對照表。 在JS中的運算符共同的情況中,(+)符號是很常見的一種,它有以下的使用情況: 數(shù)字的加法運算,二元運算 字符串的連接運算,二元運算,最高優(yōu)先 正號,一元運算,可延伸為強(qiáng)制轉(zhuǎn)換其他類型的運算元為數(shù)字類型 當(dāng)然,如果考慮多個符號一起使用時,...

    2json 評論0 收藏0
  • js溫故而知新——學(xué)習(xí)廖雪峰的js教程

    摘要:在設(shè)計時,有兩種比較運算符第一種是比較,它會自動轉(zhuǎn)換數(shù)據(jù)類型再比較,很多時候,會得到非常詭異的結(jié)果第二種是比較,它不會自動轉(zhuǎn)換數(shù)據(jù)類型,如果數(shù)據(jù)類型不一致,返回,如果一致,再比較。 數(shù)據(jù)類型和變量 數(shù)據(jù)類型計算機(jī)顧名思義就是可以做數(shù)學(xué)計算的機(jī)器,因此,計算機(jī)程序理所當(dāng)然地可以處理各種數(shù)值。但是,計算機(jī)能處理的遠(yuǎn)不止數(shù)值,還可以處理文本、圖形、音頻、視頻、網(wǎng)頁等各種各樣的數(shù)據(jù),不同的數(shù)據(jù)...

    taohonghui 評論0 收藏0
  • JS中的關(guān)系比較與相等比較運算

    摘要:在中的關(guān)系比較運算,指的是像這種大小值的關(guān)系比較。而相等比較,可區(qū)分為標(biāo)準(zhǔn)相等比較與嚴(yán)格相等比較兩大種類。 在JS中的關(guān)系比較(Relational Comparison)運算,指的是像x < y這種大小值的關(guān)系比較。 而相等比較,可區(qū)分為標(biāo)準(zhǔn)相等(standard equality)比較x == y與嚴(yán)格相等(strict equality)比較x === y兩大種類。嚴(yán)格相等比較會...

    paraller 評論0 收藏0
  • 理解JS中的加號運算

    摘要:中的基本數(shù)據(jù)類型有種,引用數(shù)據(jù)類型則是指除了上述基本數(shù)據(jù)類型以外的所有值,比如隱式類型轉(zhuǎn)換加法的隱式轉(zhuǎn)換轉(zhuǎn)換為原始值當(dāng)需要轉(zhuǎn)換為原始值時,引擎內(nèi)部會進(jìn)行抽象操作。 showImg(https://segmentfault.com/img/bVbqjVM); 基本運算規(guī)則 +的使用有兩種情況 當(dāng)+連接兩個變量或值時即為二元運算符,比如a + b,當(dāng)+在變量或值前面時,則為一元運算符,比...

    nodejh 評論0 收藏0
  • JavaScript入門

    摘要:介紹編程數(shù)據(jù)結(jié)構(gòu),算法,內(nèi)存分配表單驗證需要一門語言可以直接運行在瀏覽器中,來完成表單驗證的功能。 Javascript介紹編程(數(shù)據(jù)結(jié)構(gòu),算法,內(nèi)存分配)表單驗證 需要一門語言可以直接運行在瀏覽器中,來完成表單驗證的功能。 瀏覽器廠商 網(wǎng)景 firefox js 標(biāo)準(zhǔn) js解釋器 IE js js解釋器 google js j...

    wangdai 評論0 收藏0

發(fā)表評論

0條評論

sf190404

|高級講師

TA的文章

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