前面的话
javascript中运算符总共有46个,除了前面已经介绍过的算术运算符、关系运算符、位运算符、逻辑运算符之外,还有很多运算符。本文将介绍条件运算符、逗号运算符、赋值运算符、()和void运算符
条件运算符
条件运算符是javascript中唯一的一个三元运算符(三个操作数),有时直接称做'三元运算符'。通常这个运算符写成'"htmlcode">
variable = boolean_expression "htmlcode">greeting = 'hello ' + (username "htmlcode">greeting = 'hello '; if(username) greeting += username; else greeting += 'there';三元条件表达式与if...else语句具有同样表达效果,但是两者具有一个重大差别,if...else是语句,没有返回值;三元条件表达式是表达式,具有返回值。所以,在需要返回值的场合,只能使用三元条件表达式,而不能使用if...else
console.log(true "htmlcode">i = 0,j = 1,k = 2; //计算结果是2,它和下面的代码基本等价 i =0; j = 1; k = 2;逗号运算符常用于声明多个变量
var iNum1 = 1, iNum = 2, iNum3 = 3;逗号运算符最常用的场景是在for循环中,这个for循环通常具有多个循环变量:
//for循环中的第一个逗号是var语句的一部分 //第二个逗号是逗号运算符 //它将两个表达式(i++和j--)放在一条语句中 for(var i=0, j=10;i<j;i++,j--){console.log(i+j);}逗号运算符还可以用于赋值,在用于赋值时,逗号运算符总是返回表达式中的最后一项
var num = (1,2,3,4,5); console.log(num);//5[注意]去掉括号会报错
赋值运算符
简单的赋值操作符由等号'='表示,作用把等号右边的值赋予等号左边的变量或属性
i = o; o.x = 1;'='运算符希望它的左操作数是一个左值:一个变量或者对象属性(或数组元素)。它的右操作数可以是任意类型的任意值。赋值表达式的值就是右操作数的值
尽管赋值表达式通常非常简单,但有时仍会看到一些复杂表达式包含赋值表达式的情况。例如,可以将赋值和关系操作符放在一个表达式中,就像这样:
(a=b) == 0如果这样做的话,应该清楚知道'='和'=='运算符之间的区别。'='具有非常低的优先级,通常在一个较长的表达式中用到了一条赋值语句的值时的时候,需要补充圆括号以保证正确的运算顺序
赋值操作符的结合性是从右到左,也就是说,如果一个表达式中出现了多个赋值运算符,运算顺序是从右到左。因此,可以通过如下方式来对多个变量赋值:
i = j = k = 0;//把三个变量初始化为0JavaScript还提供11个复合的赋值运算符,这些复合的赋值运算符,都是先进行指定运算,然后将得到值返回给左边的变量
[注意]设计这些操作符的目的是简化赋值操作,使用它们并不会带来任何性能的提升
total += sales_tax; //等价于 total = total + sales_tax;运算符 示例 等价于 += a+=b a=a+b -= a-=b a=a-b *= a*=b a=a*b /= a/=b a=a/b %= a%=b a=a%b <<= a<<=b a=a<<b = a=b a=ab >= a>=b a=a>b &= a&=b a=a&b |= a|=b a=a|b ^= a^=b a=a^b在大多数情况下,表达式为:
a op= b这里op代表一个运算符,这个表达式和下面的表达式等价
a = a op b在第一行中,表达式a计算了一次,在第二行中,表达式a计算了两次,只有在a包含具有副作用的表达式(比如函数调用和赋值操作)的时候,两者才不等价
data[i++]*=2; data[i++] = data[i++]*2;圆括号运算符
圆括号运算符有两种用法:如果表达式放在圆括号中,作用是求值;如果跟在函数后面,作用是调用函数
把表达式放在圆括号之中,将返回表达式的值
console.log((1)); //1 console.log(('a')); //'a' console.log((1+2)); // 3把对象放在圆括号之中,则会返回对象的值,即对象本身
var o = {p:1}; console.log((o));// Object {p: 1}将函数放在圆括号中,会返回函数本身。如果圆括号紧跟在函数的后面,就表示调用函数,即对函数求值
function f(){return 1;} console.log((f));// function f(){return 1;} console.log(f()); // 1由于圆括号的作用是求值,如果将语句放在圆括号之中,就会报错,因为语句没有返回值
console.log(var a = 1);// SyntaxError: Unexpected token var console.log((var a = 1));// SyntaxError: Unexpected token varvoid运算符
void是一元运算符,它出现在操作数之前,操作数可以是任意类型,操作数会照常计算,但忽略计算结果并返回undefined。由于void会忽略操作数的值,因此在操作数具有副作用的时候使用void来让程序更具语义
console.log(void 0); // undefined console.log(void(0)); // undefined【作用一】替代undefined
由于undefined并不是一个关键字,其在IE8-浏览器中会被重写,在高版本函数作用域中也会被重写;所以可以用void 0 来替换undefined
var undefined = 10; console.log(undefined);//IE8-浏览器下为10,高版本浏览器下为undefined function t(){ var undefined = 10; console.log(undefined); } console.log(t());//所有浏览器下都是10【作用二】客户端URL
这个运算符最常用在客户端URL——javascript:URL中,在URL中可以写带有副作用的表达式,而void则让浏览器不必显示这个表达式的计算结果。例如,经常在HTML代码中的<a>标签里使用void运算符
<a href="javascript:void window.open();">打开一个新窗口</a>【作用三】阻止默认事件
阻止默认事件的方式是给事件置返回值false
//一般写法 <a href="http://example.com" onclick="f();return false;">文字</a>使用void运算符可以取代上面写法
<a href="javascript:void(f())">文字</a>以上这篇浅谈javascript运算符——条件,逗号,赋值,()和void运算符就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
标签:javascript逗号运算符
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。