0

0

JavaScript的表达式与运算符用法详解

巴扎黑

巴扎黑

发布时间:2017-07-29 17:15:10

|

1419人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了javascript的表达式与运算符,需要的朋友可以参考下

       JavaScript脚本语言描述了一组用于操作数据值的运算符,包括一元运算符,布尔运算符,算术运算符,关系运算符,三元运算符,位运算符和赋值运算符。
       表达式是JavaScript语言的一个“短语”,包含变量名(或字面量)和运算符。最简单的表达式时字面量或变量名。当然也有合并简单的表达式来创建复杂的表达式。
一、一元运算符
(1)递增++和递减--


var box1=100; 
++box1;//相当于box=box+1 
document.write("box1="+box1+"
");//输出box1=101 var box2=100; --box2;//相当于box=box2-1 document.write("box2="+box2);//输出box2=99

前置和后置的区别


var box=100; 
var age=++box;//box先累加1为101,再赋值给age为101 
var height=box++;//box先赋值给height为101,box再累加为102 
document.write("age="+age+"
");//输出age=101 document.write("height="+height+"
");//输出height=101 document.write("box="+box);//输出box=102,原因是box经过了两次累加,所以是102

       在没有赋值操作,前置和后置是一样的。但在赋值操作时,如果递增或递减运算符前置,那么前置的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。
(2)加和减运算符
用于取正或取负运算,也有把数字字符串转换为数值形式的功能。


var box = "20"; 
document.write(typeof box+"
"); //输出string var age=-box; document.write(age+"
");//输出-20 document.write(typeof age); //输出number

二、算术运算符
       JavaScript语言中规定了五种算术运算符,即+,-,*,/和%(取余)。如果在算术运算符的值不是数值,那么它会先使用Number()转型函数将其转换为数值(隐式转换)。

立即学习Java免费学习笔记(深入)”;


var box=100+"100"; 
document.write("box="+box+"
");//输出100100 document.write(typeof box);//输出string

       这是为什么呢?JavaScript语言中的做算术运算时,只要其中一个是字符串,那么结果就会转换为字符串。相当于字符串连接符,不能再算作是加法算术运算符。


var box="100"-10; 
document.write("box="+box+"
");//输出90 var age=5/4; document.write("age="+age+"
");//输出1.25 var height=("你的年龄是:"+(10+10));//括号强制优先级 document.write(height);//输出你的年龄是:20

       取余


var box=10%3; 
document.write("box="+box);//输出1

三、关系运算符
       用于进行比较的运算符称作为关系运算符:(大于),=(大于等于),==(相对),!=(不等),===(恒等或全等),!==(不全等或不恒等)。关系运算符大多数返回的是一个布尔值。
       和其他运算符一样,当关系运算符操作非数值时要遵循以下规则:
       1两个操作符都是数值,则数值比较
       2两个操作数都是字符串,则比较两个字符串对应的字符编码值
       3两个操作数有一个是数值,则将另一个转换为数值,在进行数值比较
       4两个操作数有一个是对象,则先调用value()方法或toString()方法,再用结果比较。


var box1=3>2; 
document.write(box1+"
");//输出true var box2="3">22; document.write(box2+"
");//输出false var box3="3">"22"; document.write(box3+"
");//输出true var box4="a">"B";//a为97,B为66 document.write(box4+"
");//输出true var box5= "Blue"<"alpha";//Blue的第一个字母是B,alpha的第一个字母是a,a为97,B为66 document.write(box5) //输出true

       在相等和不等的比较上,如果操作数是非数值,则遵循以下规则:
       1一个操作数是布尔值,则比较之前将其转换为数值,false转成0,true转成1。
       2一个操作数是字符串,则比较之前将其转成为数值再比较。
       3一个操作数是对象,则先调用value()方法或toString()方法再比较。
       4不需要任何转换的情况下,null和undefined是相等的
       5一个操作数是NaN,则==返回false,!=返回true,并且NaN和自身不等
       6两个操作数都是对象,则比较它们是否是同一个对象,如果都指向同一个对象,则返回true,否则返回false
       7在全等和全不等的判断上,比如值和类型都相等,才返回true,否则返回fasle。


var box1='2'==2; 
document.write(box1+"
");//输出true,比较的只是数值 var box2={}=={}; document.write(box2+"
");//输出false,因为比较的是它们的地址,每个新创建对象的引用地址都不同。 var box3=null==undefined; document.write(box3+"
");//输出true,因为均为空数值 var box4='2'===2; document.write(box4+"
");//输出false,两个操作数的数据类型不相等 var box5=null===undefined; document.write(box5);//输出false,两个操作数的数据类型不相等

四逻辑运算符
       JavaScript语言中的逻辑运算符通常作用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:&&(逻辑与),||(逻辑或)和!(逻辑非)。
       (1)&&表示两边都必须是true,才返回true。
       如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时遵循下面的规则:
       1第一个操作数是对象,则返回第二个操作数
       2第二操作数是对象,则第一个操作数返回true,才返回第二个操作数,否则返回false
       3一个操作数是null,则返回null
       4一个操作数是undefined,则返回undefined
       5如果一个运算数是对象,另一个是 Boolean 值,返回该对象
      逻辑与运算符属于短路操作,如果有第一个操作数返回的是false,第二个不管是true还是false都返回false。


var box1={}&&(5>4); 
document.write(box1+"
");//输出true var box2=(5>4)&&{}; document.write(box2+"
");//输出[object Object] var box3=(3>4)&&{}; document.write(box3);//输出false

      (2)||表示两边有一个是true,就返回true。
      如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时遵循下面的规则:
      1第一个操作数是对象,则返回第一个个操作数
      2第一个操作数的求值结果为fasle,则返回第二个操作数
      3两个操作数都是对象,则返回第一个操作数
      4两个操作数都是null,则返回null
      5两个操作数都是undefined,则返回undefined
      6两个操作数都是NaN,则返回NaN
      逻辑或运算符也属于短路操作,如果有第一个操作数返回的是true,第二个不管是true还是false都返回true。


var box1={}||(5>4); 
document.write(box1+"
");//输出[object Object] var box2=(5>4)||{}; document.write(box2+"
");//输出true var box3=(3>4)||{}; document.write(box3);//输出[object Object]

      (3)!逻辑非运算符可以作用与任何值,无论这个值是什么数据类型,这个运算符都会返回一个布尔值,它的流程是:先将这个值转换成布尔值,然后取反,规则如下:
      1操作数是一个对象,返回false
      2操作数是一个空字符串,返回true
      3操作数是一个非空字符串,返回false
      4操作数是数值0,返回true
      5操作数是任意非0数值,返回false
      6操作数是null,返回true
      7操作数是NaN,返回true
      8操作数是undefined,返回true


var box=!{}; 
document.write(box);//输出false

五、位运算符
      JavaScript语言中包括了七种位运算符:~(位非),&(位与),|(位或),^(位异或),>(有符右移号),>>>(无符号右移)
       (1)位非(~)运算把运算数转换成32位数字,然后把二进制数转换成它的二进制反码,最后把二进制数转换成浮点数。实质上是对数字求负,然后减去1即为所得值。


var box=~25; 
document.write(box);//输出-26

       (2)位与(&)运算直接对数字的二进制形式进行运算,然后对上下同一位置的两个数位进行与运算,只有两个数位都为1时才得出1,其余的均为0.


var box=25&3; 
document.write(box);//输出1

       (3)位或(|)运算也是直接对数字的二进制形式进行计算,然后对上下同一位置的两个数位进行或运算,只右两个数位都为0时才得出0,其余的均为1.


var box=25|3; 
document.write(box);//输出27

       (4)位异或(^)也是直接对二进制形式进行运算。当只有一个数位存放的是1时,它才返回1。其余的返回0。也就是两个数位相同时返回0,不同时返回1.


var box=25^3; 
document.write(box);//输出26

       (5)左移运算也是对二进制数进行操作,相等于第一个操作数乘以(2的左移位数次幂)的积。


var box=25<<3; 
document.write(box);//25左移3位相当于25乘以(2的3次幂),因此输出200

        (6)有符号右移运算也是对二进制数进行操作,相等于第一个操作数除以(2的右移位数次幂)的商。


var box=24>>2; 
document.write(box);//输出6

       (7)无符号右移运算也是对二进制数进行操作,对于正数,与有符号右移是相同的结果,但是对于负数,就会所不同。
     

六、赋值运算符
      赋值运算符包括:=(),+=(),-=(),*=(),/=(),%=(),>=(),>>>=()。


var box=100; 
box+=100;//相当于box=box+100 
document.write("box="+box);//输出box=200

七、其他运算符
1)、字符串运算符:“+”,它的作用是将两个字符串想加。规则:只要有一个字符串即可。


var box=100+"10"'; 
document.write("box="+box);//输出100100

2)、逗号运算符,可以在一条语句中执行多个操作


var box=100,age=200,height=300; 
document.write("box="+box);//输出box=100

3)、三元操作符:


var box=(3>4)?"对":"错"; 
document.write(box);//输出错

      如果想更详细的了解ECMAScript运算符的知识,可以访问JavaScript高级教程中的ECMASscript一元运算符这个系列中有详细的运算符教程。对于JS的运算符来说,我们可以对比着C++,C#和Java来学,这个还是相当的容易的。

以上就是关于JavaScript的表达式与运算符的全部内容,希望对大家的学习有所帮助。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

32

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

30

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

33

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

7

2026.01.31

漫画防走失登陆入口大全
漫画防走失登陆入口大全

2026最新漫画防走失登录入口合集,汇总多个稳定可用网址,助你畅享高清无广告漫画阅读体验。阅读专题下面的文章了解更多详细内容。

11

2026.01.31

php多线程怎么实现
php多线程怎么实现

PHP本身不支持原生多线程,但可通过扩展如pthreads、Swoole或结合多进程、协程等方式实现并发处理。阅读专题下面的文章了解更多详细内容。

1

2026.01.31

php如何运行环境
php如何运行环境

本合集详细介绍PHP运行环境的搭建与配置方法,涵盖Windows、Linux及Mac系统下的安装步骤、常见问题及解决方案。阅读专题下面的文章了解更多详细内容。

0

2026.01.31

php环境变量如何设置
php环境变量如何设置

本合集详细讲解PHP环境变量的设置方法,涵盖Windows、Linux及常见服务器环境配置技巧,助你快速掌握环境变量的正确配置。阅读专题下面的文章了解更多详细内容。

0

2026.01.31

php图片如何上传
php图片如何上传

本合集涵盖PHP图片上传的核心方法、安全处理及常见问题解决方案,适合初学者与进阶开发者。阅读专题下面的文章了解更多详细内容。

2

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号