前面的话
javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少。运算符始终都遵循着一些固定语法,只有了解并掌握这些内容,才能正确使用运算符。本文将主要介绍javascript运算符的语法概述
操作数个数
javascript的运算符总共有46个,如果根据其操作数的个数进行分类,则大多数是二元运算符(binary operator),它们的操作数都是两个,它们将两个表达式合并成复杂表达式
1 + 2; true || false;
javascript中的一元运算符(unary operator)将一个表达式转换为另一个稍复杂的表达式,主要包括以下9个:
++ -- - + ~ ! delete typeof void a++; typeof true;
javascript只有一个三元运算符(ternary operator),是条件判断运算符?:,它将三个表达式合并成一个表达式
2>1 ? 2 : 1;
优先级
运算符优先级控制着运算符的执行顺序,优先级高的运算符的执行总是先于优先级运算符低的运算符
46个运算符总共分为14级的优先级,从高到低依次是:
++ -- - + ~ ! delete typeof void * / % + - << >> >>> < <= > >= instanceof in == != === !== & ^ | && || ?: = *= /= %= += -= &= ^= |= <<= >>= >>>= ,
由这14级的运算符优先级等级可以看出:
一元运算符 > 算术运算符 > 比较运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符 > 逗号运算符
[注意]逻辑取反运算符属于一元运算符,其优先级最高
例子
!2<1&&4*3+1;
像上面这种情况就比较复杂,逐步来分解其运算顺序
先计算一元运算符!,!2;//false
//于是表达式变为 false < 1 && 4*3 + 1;
计算算术运算符4*3+1;//13
//于是表达式变为 false < 1 && 13;
计算比较运算符<,false<1;//true
//于是表达式变为: true && 13;//13
可以使用圆括号来强行指定运算次序
2+3*5;//17 (2+3)*5;//25;
结合性
运算符具有两种结合性,一种是从左向右结合,记号为L,一种是从右向左结合,记号为R。结合性指定了在多个具有同样优先级的运算符表达式中的运算顺序
多数运算符都具有从左向右的结合性,只有一元运算符、条件运算符和赋值运算符具有从右向左的结合性
w = x + y + z; //等价于: w = ((x + y)+ z);
w = x = y = z; //等价于: w = (x = (y = z));
q = a ? b : c ? d : e ? f : g; //等价于: q = a ? b : (c ? d : (e ? f : g));
运算符的优先级和结合性决定了它们在复杂表达式中的运算顺序,但子表达式相互有影响时,顺序会发生变化
例子
a = 1; b = a++ + a-- * a++;
先分析该表达式中,根据优先级的顺序,分别运算递增运算符、乘法运算符、加法运算符和赋值运算符
先计算第一个a++;//结果为1,a为2
//表达式变成 b = 1 + a-- * a++;
计算a--;//结果为2,a为1
//表达式变成 b = 1 + 2 * a++;
计算第二个a++;//结果为1,a为2
//表达式变成 b = 1 + 2 * 1;
所以,最终a = 2; b = 3;
a = 1; b = a++ + a-- * a++; console.log(a,b);//2 3
//类似地 a = 1; b = a-- * a++ + a++; console.log(a,b);//2,1
类型
一些运算符可以作用于任何数据类型,但仍然希望它们的操作数是指定类型的数据,并且大多数运算符返回一个特定类型的值,在下面的运算符规则表中,箭头前为运算符操作数的类型,箭头后为运算结果的类型
【左值】
左值(lvalue)是一个古老的术语,指表达式只能出现在运算符的左侧
在javascript中,变量、对象属性和数组元素都是左值
递增运算符++、递减运算符--和赋值运算符的操作数类型是左值
var a = 3; a++;//3 3--;//报错 ({}).a += '1';//'undefined1' 'test' -= 'test';//报错
运算符规则表
运算符 操作 类型 ++ 增量 lval->num -- 减量 lval->num - 求反 num->num + 转换为数字 num->num ~ 按位求反 int->int ! 逻辑非 bool->bool delete 删除属性 lval->bool typeof 检测类型 any->str void 返回undefined any->undef ****************************************************** * \ % 乘、除、求余 num,num->num ****************************************************** + - 加、减 num,num->num + 字符串连接 str,str->str ****************************************************** << 左移位 int,int->int >> 有符号右移位 int,int->int >>> 无符号右移位 int,int->int ****************************************************** < <= > >= 比较数字顺序 num,num->bool < <= > >= 比较字母表顺序 str,str->bool instanceof 测试对象类 obj,func->bool in 测试属性 str,obj->bool ****************************************************** == 判断相等 any,any->bool != 判断不等 any,any->bool === 判断恒等 any,any->bool !== 判断非恒等 any,any->bool ****************************************************** & 按位与 int,int->int ****************************************************** ^ 按位异或 int,int->int ****************************************************** | 按位或 int,int->int ****************************************************** && 逻辑与 any,any->any ****************************************************** || 逻辑或 any,any->any ****************************************************** ?: 条件运算符 bool,any,any->any ****************************************************** = 赋值 lval,any->any *= /= %= += -= &= 运算且赋值 lval,any->any ^= |= <<= >>= >>>= ****************************************************** , 忽略第一个操作数, any,any->any 返回第二个操作数
以上这篇javascript运算符语法全面概述就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍javascript运算符——位运算符全面介绍,包括了javascript运算符——位运算符全面介绍的使用技巧和注意事项,需要的朋友参考一下 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用。但是,其速度极快,且合理使用能达到很好的效果。本文将介绍javascript中常常被忽视的运算符——位运算符 二进制表示 ECMAScript中的所有数值都以IEEE-754
本文向大家介绍javascript运算符——逻辑运算符全面解析,包括了javascript运算符——逻辑运算符全面解析的使用技巧和注意事项,需要的朋友参考一下 前面的话 逻辑运算符对操作数进行布尔运算,经常和关系运算符一样配合使用。逻辑运算符将多个关系表达式组合起来组成一个更复杂的表达式。逻辑运算符分为逻辑非'!'、逻辑与'&&'、逻辑或'||'3种,本文将介绍这三种逻辑运算符 逻辑非 逻辑非操作
主要内容:算术运算符,赋值运算符,字符串运算符,自增、自减运算符,比较运算符,逻辑运算符,三元运算符,位运算符运算符是用来告诉 JavaScript 引擎执行某种操作的符号,例如加号(+)表示执行加法运算,减号(-)表示执行减法运算等,本节我们就来介绍一下 JavaScript 中不同的运算符。 算术运算符 算数运算符用来执行常见的数学运算,例如加法、减法、乘法、除法等,下表中列举了 JavaScript 中支持的算术运算符: 运算符 描述 示例 + 加法运算符 x + y 表示计算 x 加 y
算术运算符以数值(字面量或变量)作为其操作数,并返回一个单个数值。标准算术运算符是加法(+),减法( - ),乘法(*)和除法(/)。—— MDN 算数运算符是用来做算数运算的,如 + 这个符号,就是用来做加法操作。 1. N元运算 N 代表一个数,如一元运算,二元运算。 N元运算 表示由N个值产生一个新的值的规则。 如 * 就是一个二元运算符,他由两个数相乘产生第三个数。 JavaScript
本文向大家介绍JavaScript 空运算符,包括了JavaScript 空运算符的使用技巧和注意事项,需要的朋友参考一下 示例 的void运算符计算给定表达式,然后返回undefined。 语法: 返回值: undefined 描述 的void操作者通常用于获得undefined原始值,通过写入的装置void 0或void(0)。请注意,它void是一个运算符,而不是一个函数,因此()不是必需的
以下是关于的几个主题: 三元算子-Java 除此之外,我不懂语法。 我有一个带有和的方法。 三元运算符的语法为 我试过这个: 我有一个错误消息=>