码迷,mamicode.com
首页 > 编程语言 > 详细

javascript(7.6)运算符

时间:2015-07-06 20:15:15      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

一、条件运算符(?:)

条件运算符是javascript中唯一的一个三元运算符,有时直接称做“三元符”。通常这个运算符写成“?:”,当然在代码中往往不会如此简写,因为这个运算符拥有三个操作数,第一个操作数在"?"之前,第二个操作数在"?"和":"之间,第三个操作数在":"之后,例如:

x > o ? x : -x   //求x的绝对值

条件运算符的操作数可以是任意类型。第一个操作数当成布尔值,如果它是真值,那么将计算第二个操作数,并返回其计算结果。否则,如果第一个操作数是假值,那么将计算第三个操作数,并返回其计算结果。第二个和第三个操作数总是会计算其中之一,不可能两者同时执行。

使用if语句也会带来同样的效果,"?:"运算符只是提供了一种简写形式。这里是一个"?:"的典型应用场景,判断一个变量是否有定义(并拥有一个有意义的真值),如果有定义则使用它,如果无定义则使用一个默认值:

greeting = "hello" + (username ? username : "there");

这和下面使用if语句的代码是等价的:

greeting = "hello";
if(username)
  greeting +=username;
else
  greeting +="there";

二、typeof运算符

typeof是一元运算符,放在其单个操作数的前面,操作数可以是任意类型。返回值为表示操作数类型的一个字符串。

typeof最常用的用法是写在表达式中,比如:

三、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,因为这个元素不存在了

然而,如果输入a.length,数组的长度依然是3,不会改变,尽管此时已经删除了这个元素,但删除操作留下了一个“黑洞”,而这个“黑洞”依然占据着一个长度,故此数组的长度不会改变。

四、void运算符

void是一元运算符,它出现在操作数之前,操作数可以是任意类型。这个运算符并不是经常使用:操作数会照常计算,但忽略计算结果并返回undefined。由于void会忽略操作数的值,因此在操作数具有副作用的时候使用void来让程序更具语义。

ps:这个运算符最常用在客户端的URL----Javascript:URL中,在URL中可以写带有副作用的表达式,而void则让浏览器不必显示这个表达式的计算结果。例如,经常在HTML代码中的<a>标签里使用void运算符:

<a href="javascript:void window.open();">打开一个新窗口</a>

当然,通过给<a>的onclick绑定一个事件处理程序要比在href中写"javascript:URL"要更加清晰,如此一来的话,操作符void就变得可有可无了。

五、逗号运算符(,)

逗号运算符是二元运算符,它的操作数可以是任意类型。它首先计算左操作数,然后计算右操作数,最后返回右操作数的值。

基本语法是这样的:

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

计算结果是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(7.6)运算符

标签:

原文地址:http://my.oschina.net/u/2352178/blog/475296

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!