首頁  >  文章  >  web前端  >  javascript一些非主流運算子用法總結

javascript一些非主流運算子用法總結

伊谢尔伦
伊谢尔伦原創
2017-07-19 10:38:521428瀏覽

javascript支援許多其它各種各樣的運算符。

i.條件運算子(?:)

條件運算子是javascript中的唯一一個三元運算子。通常這個運算子寫成"?:",這個運算子擁有三哥運算元,第一個運算元在"?"之前,第二個運算元在「?」和":"之間。第三個運算元早在":"之後,例如

    x > 0 ? x : -x; //求x的絕對值
條件運算子的運算元可以是任意型別。第一個操作數當成布林值,如果它是真值,那麼將計算第二個操作數,並傳回計算結果。賦值如果第一個值運算元是假值,那麼就會計算第三個運算元。並傳回計算結果。第二個和第三個運算元總是會計算其中一個。不可能兩者同時進行。其實使用if語句也達到同樣的效果(5.4.1),「?:」運算子只是提供了一種簡寫形式。這裡有一個"?:"的典型使用場景,判斷一個變數是否有定義,如果有定義則使用它,如果無定義,則使用一個預設值。

 grett = "hello" + (username ? username : "three");

和以下的程式碼是等價的,但上面的更簡潔

grett = "hello";
if (username)
   grett += username;
else
   grett + "three"

ii.typeof()運算子

typeof是一元運算符,放在單個操作數前面,操作數可以是任何類型,傳回值表示操作類型的字串。

   x             __ typeof x
            undefined     __ "undefined"
            null           __  "object"
            ture或false    __"boolean"
            任意数字或NaN     __ "Number"
            任意字符串                        __ "String"
            任意函数                            __ "function"
            任意内容对象(非函数)__ "object"
            任意宿主对象                    __ 由编译器各自实现的字符串,但不是"undefined" "boolean" "number" "string"

typeof最常用的用法寫在表達式中們就像這樣

(typeof value == "string") ? "" + value + "":value;
typeof運算子同樣在swith語句中(5.4.3)非常有用,需要注意的是,typeof運算可以帶上園括號。這樣讓typeof看起來像是函數名,而非關鍵字

typeof(i)

#iii.delete運算子

##delete是一元運算符,它用來刪除物件的屬性或陣列的元素。就像賦值、遞增、遞減運算子一樣。 delete也是具有副作用的。它是用來做刪除操作的。不是用來傳回一個值的。

var o = {
                x: 1,
                y: 2
            }
            delete o.x;
            "x" in o; //=>false
            var a = [1, 2, 3];
            delete a[2]; // 删除数组中最后一个元素
            2 in a; //=> false 元素2已经在数组中不存在了
            a.length; //=>3,注意,数组长度并没有改变,尽管上一行删除了这个元素,但删除操作留下了一个洞。实际上并没有修改数组的长度,因此a的长度仍然为3

要注意的是,刪除屬性或刪除陣列元素不只設定了一個undefined值,當刪除一個屬性時,這個屬性不復存在。讀取一個不存在的值將會回傳undefined.關於delete刪除還有嚴格模式下的一些情況,需要學習的人自己試驗,這裡給一些例子。

var o = {x: 1,y: 2};
            delete o.x; //删除一个对象属性,返回true
            typeof o.x; //属性不存在,返回"undefined"
            delete o.x; //删除不存在的属性,返回true;
            delete o; //不能删除通过var关键字声明的变量,返回false
            delete 1; //参数不是一个左值。
            this.x = 1;// 给全局定义一个属性,这里没有使用var
            delete x ; //试图删除它,在非严格模式下返回true
                       //在严格模式下回抛出异常,这时使用"delete this.x"来代替
             x;        //运行时出错,没有定义x

iii.void運算子。

void是一元運算符,在出現運算元之前,運算元可以是任何型別。這個運算子並不是經常使用:運算元會照常計算,但會忽略計算結果並回傳undefined。由於void會忽略操作數的值,因此在操作數具有副作用時使用void來程式會更有意義。

這個最常用的帶客戶端url.在url寫帶有副作用的表達式,而void則讓瀏覽器不顯示在這個表達式的運算結果。

<a href="javascript:void window.open();">new</a>

iiii.逗號運算子。 (,)

逗號運算子是二元運算符,它的運算元可以是任意型別。它首先計算左操作數,然後計算右操作數。

 i = 0, j = 1, k = 2;

它和下面的程式碼基本上等價的

i = 0; j = 1; k = 2;

總是會計算左邊的表達式,但計算結果忽略掉,也就是說,只有左側表達式有副作用,才會使用逗號運算讓程式碼變得更通暢。逗號運算子最常用的場景是for迴圈中,這個for迴圈通常有多個迴圈變數。

//for循环中的第一个逗号是var语句的一部分
             //第二个逗号是逗号运算符
             //它将两个表达式(i++和j++)放在一条(for循环中)语句中
            for (var i = 0, j = 10; i < j; i++, j--);
            console.log(i + j);

以上是javascript一些非主流運算子用法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn