赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 编程语言

常用的编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN


首页 > 专业技术 > 编程语言 > JavaScript的运算符和表达式
JavaScript的运算符和表达式

运算符是指定计算操作的符号,用于将1个或几个值进行计算而生成一个新值。被计算的值称为操作数,操作数可以是常量、变量、表达式和函数调用等。根据操作数的个数,可将运算符分为单目运算符(只有一个操作数)、双目运算符(有2个操作数)和三目操作数(有3个操作数)。
表达式是运算符和操作数组合而成的算式,,表达式具有值,这个值是对操作数实施运算符所确定的计算后得到的结果。

1.算术运算符:

JavaScript算术运算符的操作数和计算结果都是数值型的,见下表:

运算符 说明
+ 加运算
- 减或单目减运算(负值)
* 乘运算
/ 除运算
% 取模运算,即计算两个整数相除的余数
++x与x++ 增1运算。y=++x相当于x=x+1;y=x。y=x++相当于y=x;x=x+1
--x与x-- 减1运算。y=--x相当于x=x-1;y=x。y=x--相当于y=x;x=x-1

2.关系运算符:

又称比较运算符,用于对操作数进行比较,返回一个布尔值。

运算符 说明
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于。比较是否相等,可能先进行类型转换。
!= 不等于。比较是否不等,可能先进行类型转换。
=== 严格等于。只有类型和值都相同,才相等,否则不等。
!== 严格不等于。只要类型和值之一不同,就不等。

关系运算符的操作数一般为数值型数据,但也可以是其他类型的数据。如果两个操作数都是字符串,则进行字符串比较,也就是依次比较两个字符串中相同位置的字符,对字符的比较是比较二者的Unicode码值。先是两个字符串的首字符的Unicode码值比较,如果相同就比较下一个字符,依次类推;如果依次比较的字符都相同,字符串字符多的大。
对于普通关系运算符(< 、<=、 >、 >=、 ==、 !=),如果至少有一个操作数不是字符串,就先将非数值型操作数转换为数值,然后进行数值比较运算。

3.逻辑运算符:

逻辑运算符的操作数和计算结果都是布尔值。

运算符 说明
&& 逻辑与,只有当两个操作数的值都为true时,结果才为true,否则false
|| 逻辑或,只有当两个操作数的值都为false时,结果才为false,否则true
逻辑非,对true的操作结果为false,对false的操作结果为true

逻辑运算符用于对逻辑操作数进行逻辑运算,典型的逻辑操作数是关系表达式,即逻辑运算符通常与关系运算符配合使用。

4.位操作运算符:

位操作运算符用于对整数的二进制位进行操作,计算结果仍为整数。

运算符 说明
& 按位与。两个操作数的相应位都为1时,结果为1,否则为0
| 按位或。两个操作数的相应位有一个1,结果就为1,否则为0
^ 按位异或。两个操作数的相应位不同时,结果为1,否则为0
~ 按位取反,单目运算符。对任意一个位,若为1则变为0,若为0则变为1
<< 左移。左移的位数由操作数确定,并且右边空位补0
>> 右移。右移的位数由操作数确定,对正数左边空位补0,对负数左边空位补1
>>> 无符号数的右移。右移的位数由操作数确定,并且左边空位补0

左移和右移常用于进行快速乘除,左移一位相当于左操作数乘以2,而右移一位相当于左操作数除以2。
JavaScript以补码形式表示整数,使用4个字节。-1的补码是32个1,首位1是符号位,后31个1是数值位。对于负数的补码表示,右移时空位补1,故-1>>2的计算结果还是-1;而将-1的补码表示视为无符号整数时,右移的空位补0,故-1>>>2的计算结果是

5.赋值运算符:

最基本的赋值运算符是等号=,用于对变量进行赋值。另外,一些运算符可以与等号联合使用,构成组合赋值运算符。

运算符 说明
= 将右操作数的值赋给左边的变量
+= 将左边变量递增右操作数的值。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=a^b
^= 将左边变量与右操作数的值按位异或。a&=b,相当于a=a&b
<<= 将左边变量左移,具体位数由右操作数的值给出。a<<=b,相当于a=a<<b
>>= 将左边变量右移,具体位数由右操作数的值给出。a>>=b,相当于a=a>>b
>>>= 将左边变量进行无符号数右移,具体位数由右操作数的值给出。a>>>=b,相当于a=a>>>b

赋值表达式也是表达式,同样具有值,而赋值表达式的值就是赋值运算符左边变量被赋值后所具有的值。

6.条件运算符:

JavaScript支持一种三目运算符,称为条件运算符,格式如下:
  condition?true_result:false_result
如果条件为真,则表达式的值为true_result子表达式的值,否则为false_result子表达式的值。
示例:  status=(age>=18)?”成人”:”小孩”;

7.其他运算符:

JavaScript还包含其他几个特殊的运算符:

运算符 说明
. 成员选择运算符,用于引用对象的属性和方法。
, 逗号运算符,用于把不同的值分开。
{} 定义块,还可以创建并初始化一个新的Object示例
[] 下标运算符,用于引用数组元素。
() 函数调用运算符,用于函数调用。
delete 删除一个对象的属性或一个数组索引处的元素。
in 计算属性是否为特定对象的一部分,经常用于for in循环中。
instanceof 计算表达式的原型链是否包括function的原型对象。
new 生成一个对象的实例。
typeof 返回表示操作数的类型名(字符串值),有6种:"number"、 "string"、 "boolean"、 "object"、 "function"、 "undefined"。
void 返回undefined。

8.运算符的优先级与结合性:

复杂表达式有多个运算符,计算表达式的值依赖运算符的优先级,优先级高的先计算。

优先级 运算符 说明 结合性
15 .  []  () 字段访问、数组下标以及函数调用 左结合
14 ++ -- - ~ ! typeof new void delete 单目运算符、返回类型、对象创建 右结合
13 *  /  % 乘法、除法、取模 左结合
12 +  -  + 加法、减法、字符串连接 左结合
11 <<  >>  >>> 移位 左结合
10 <<=  >>= 小于、小于等于、大于、大于等于 左结合
9 ==  !=  ===  !== 等于、不等于、恒等、不恒等 左结合
8 & 按位与 左结合
7 ^ 按位异或 左结合
6 | 按位或 左结合
5 && 逻辑与 左结合
4 || 逻辑或 左结合
3 ? : 条件 右结合
2 = += -= *= /= %= &= |= ^= <<= >>= >>>= 赋值、运算赋值 右结合
1 , 逗号运算符 左结合

由于复杂运算符容易产生歧义,因此尽量使用简单的表达式,也可以使用一对圆括号明确指定表达式的计算顺序。
当表达式中连续出现的几个运算符优先级相同时,其运算顺序由结合性决定,分为左结合和右结合。左结合指左边的运算符优先计算,右结合指右边的运算符优先计算。

9. 表达式中的类型转换:

在表达式求值时,通常要求操作数是属于某种特定的数据类型。如果操作数的数据类型不是运算符要求的类型,JavaScript会根据运算符的特性和操作数的类型进行隐式类型转换。

1)对于+运算符:如果其中一个操作数为字符串,就认为是字符串连接,若另一个不是字符串就自动转换为字符串;如果两个操作数都不是字符串,那么就是算数加运算,但可能生成NaN值。

2)对于其他运算符:如果操作数不是所要求的类型,就把该操作数转换成相应类型的值。

3)使用函数parseInt()和parseFloat()可以显式把字符串转换为数值。

10.特殊值的比较:

1)NaN:NaN没有具体的数字值,解释器一般会将其表示为一个随机的对象,因此一个NaN和另一个NaN不会相等,也不存在大于或小于的关系。

2)null和undefined:很特殊,没有规律,需要记住结果:

null==undefined true
null!=undefined false
null>=undefined false
null<undefined false
因为不是一个对象,因此不会全等。即:
null===undefined false
null!==undefined true

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659