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
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
<a href="javascript:void window.open();">new</a>
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中文網其他相關文章!