js之運算符

上鏈接:運算符

一元運算符

一元運算符只有一個操作數(shù)

一元運算符 名稱 語法 作用
delete 刪除對象屬性 delete a 用來刪除對象自身的屬性
void 放棄 void 表示表達式放棄返回值
typeof 類型檢測 typeof b 用來判斷給定對象的類型
++ 自增 ++b
b++
操作數(shù)增加1
-- 自減 --b
b--
操作數(shù)減1
+ 一元正號 +b 位于操作數(shù)的前面,計算其操作數(shù)的數(shù)值
- 一元負號 -b 位于操作數(shù)的前面,計算其操作數(shù)的數(shù)值,并轉換操作數(shù)的符號

typeof運算

類型 結果
undefined undefined
null object
number number
bigint bigint
string string
symbol symbol
boolean boolean
function function
array object
object object

算術運算符

算術運算符以數(shù)值(字面量或變量)作為其操作數(shù),并返回一個單個數(shù)值。

算術運算符 名稱 語法 作用
+ 加法 a+b 數(shù)值求和
字符串拼接
- 減法 a-b 數(shù)值求差
數(shù)字字符串轉數(shù)字["1"-0]
* 乘法 a*b 數(shù)值求乘積
/ 除法 a/b 數(shù)值求商 [ 求商的數(shù)可能為浮點數(shù) ]
[除0商為Infinity]
% 求余 a%b 數(shù)值求余
** a ** b 數(shù)值求余 [冪運算是右結合]

關系運算符

關系運算符比較兩個操作數(shù)并返回基于比較結果的Boolean值。

關系運算符 名稱 語法 作用
in 屬性 in obj 用來判斷對象是否擁有給定屬性
instanceof obj instanceof obj2 判斷一個對象是否是另一個對象的實例
< 小于 a < b 判斷a是否小于b
> 大于 a < b 判斷a是否大于b
<= 小于等于 a <= b 判斷a是否小于等于b
>= 大于等于 a >= b 判斷a是否大于等于b
== 相等 a == b 判斷a是否等于b
!= 不相等 a != b 判斷a是否不等于b
=== 全等 a === b 判斷a是否全等于b,數(shù)值、類型均相等
!== 非全等 a !== b 判斷a是否非全等于b

instanceof

instanceof運算符用于檢測構造函數(shù)的prototype屬性是否出現(xiàn)在某個實例對象的原型鏈上。

位移運算符

在二進制的基礎上,對數(shù)字進行移動操作

位移運算符 名稱 語法 作用
<< 按位左移運算符 9 << 1 數(shù)字9左移1位,表示翻2*1倍
>> 按位右移運算符 9>>1 數(shù)字9右移1位,表示除2*1,并向下取整
>>> 無符號右移運算符
& 位與運算 每個比特位執(zhí)行與(AND)操作
| 位或運算 每個比特位執(zhí)行或(OR)操作
^ 位異或運算 每個比特位執(zhí)行異或(XOR)操作
~ 位非運算 每個比特位執(zhí)行非(NOT)操作

邏輯運算符

邏輯運算符典型的用法是用于boolean(邏輯)值運算, 它們返回boolean值。

邏輯運算符 名稱 語法 作用
&& 邏輯與 expr1 && expr2 expr1和expr2都為真,返回真;否則返回假
|| 邏輯或 expr1 || expr2 expr1和expr2都為假,返回假;否則返回真
! 邏輯非 !expr1 expr1的真假性改變
!! 雙重非運算符 !!expr1 顯式地將任意值轉換為對應的布爾值
?? 空值合并操作符 當左側操作數(shù)為null或undefined時,返回其右側操作數(shù),否則返回左側操作數(shù)

注意:

  • 邏輯運算符有短路特性
  • 注意邏輯運算符之間的優(yōu)先級 ! > && > ||

空值合并運算符 ??

空值合并操作符 邏輯或操作符
當左側操作數(shù)為nullundefined時,返回其右側操作數(shù),否則返回左側操作數(shù) 當左側操作數(shù)為假值時,返回右側操作數(shù),否則返回左側操作數(shù)

如果左側操作數(shù)為0或''假值的時候,空值合并操作運算符會取左邊操作數(shù);邏輯或操作符會取右側操作數(shù)。

邏輯運算符中的顯著的功能

空值操作運算符(??):當左側操作數(shù)為null或undefined時,返回右側操作數(shù);否則返回左側操作數(shù)。
邏輯或運算符(||):邏輯或操作符會在左側操作數(shù)為時,返回右側操作數(shù);否則返回左側操作數(shù)。
可選鏈式操作符(?.):當訪問的屬性為null或undefined時,將會跳過此語句;否則執(zhí)行。【有點類似if條件句的簡寫】

<!DOCTYPE html>
<html>
    <head>
        <title>運算符</title>
    </head>
    <body>
        <script>
            "use strict"
            let a = 0;
            let b = 1;
            let c = undefined;
            let d = {
                "prop": "Prototype",
            }
                        let e = null;
            
            console.log(a || "a1") // a1
            console.log(a ?? "a1") // 0

            console.log(b || "b1") // 1
            console.log(b ?? "b1") // 1
            
            
            console.log(c || "c1") // c1
            console.log(c ?? "c1") // c1

            console.log(d.prop?.toUpperCase()) // PROTOTYPE
            console.log(d.prop1?.toUpperCase()) // undefined

            console.log(e || "e1") // e1
            console.log(e ?? "e1") // e1
        </script>
    </body>
</html>

條件運算符(三元)

condition ? ifTrue : ifFalse
條件運算符把兩個結果的其中一個符合運算邏輯的值返回

逗號操作運算符

逗號操作運算符對它的每個操作數(shù)求值(從左到有),并返回最后一個操作數(shù)的值。

賦值運算符

賦值運算符會將右邊的操作數(shù)的值分配給左邊的操作數(shù)。

運算符 含義
= 賦值運算符
+= 賦值求和
-= 賦值求差
*= 賦值乘積
/= 賦值商
%= 賦值求余
解構賦值 將屬性/值從對象中取出,賦值給其他變量

解構賦值

解構賦值語法是一種JavaScript表達式。通過解構賦值,可以將屬性/值從對象/數(shù)組中取出,賦值給其他變量。

解構數(shù)組

  • 默認值:
    [a, b = 7] = [1]b的值為默認值7。
  • 交換變量
    [a, b] = [b, a]使用解構表達式交換變量
  • 忽略某些值
    [a, , c] = [1, 2, 3]
  • 解構+剩余模式
    [a, ...b] = [1, 2, 3]b的取值為[2,3]
    剩余元素必須是數(shù)組的最后一個元素,否則會報SyntaxError語法錯誤。

解構對象

// 基本解構
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true

// 無聲明賦值
var a, b;
({a, b} = {a: 1, b: 2}) // 括號必須寫,否則會被認為是一個塊,而不是一個對象字面量

// 解構之后進行更名
var {p: updatep, q: updateq} = {p: 42, q:45} // 這句話之前必須以分號結尾
console.log(updatap) // 42
console.log(updateq) // 45

// 默認值
var {p = 1, q = 2} = {p: 43};

// 默認值,解構之后進行更名
var {a:aa = 10, b:bb = 5} = {a: 3};

注意事項:
解構對象時會查找原型鏈(如果屬性不在對象自身,將從原型鏈中查找)

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 賦值運算符 名字操作符含義賦值x=yx=y加法賦值x+=yx=x+y減法賦值x-=yx=x-y乘法賦值x*=yx=...
    仙姑本姑閱讀 409評論 0 0
  • 我們常常需要對一些數(shù)據(jù)處理,經(jīng)過一定加工得出新的數(shù)據(jù),而加工的過程就是運算。跟數(shù)學中的運算一樣,不同的運算符有不同...
    深度剖析JavaScript閱讀 1,118評論 0 6
  • JavaScript中運算符主要用于連接簡單表達式,組成一個復雜的表達式。常見的有算數(shù)表達式、比較表達式、邏輯表達...
    饑人谷_小侯閱讀 500評論 0 0
  • 算術運算符 概述 JavaScript共提供10個算術運算符,用來完成基本的算術運算。 加法運算符:x + y 減...
    oWSQo閱讀 410評論 0 1
  • 運算符的定義和分類 運算符的定義 運算符:也叫操作符,是一種符號。通過運算符可以對一個或多個值進行運算,并獲取運算...
    陳觀齊閱讀 599評論 0 0

友情鏈接更多精彩內(nèi)容