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);
Atas ialah kandungan terperinci javascript一些非主流运算符用法总结. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!