JavaScript中的运算符和语句

一、JavaScript的运算符

  

  a、基本的算术运算符(+、-、*、/、%)

  -、*、/、%运算符会在必要的时候将操作数转换为数字,无法转换成数字的操作数将会转换成NaN,相应的运算结果也是NaN。

  JavaScript中所有的数都是浮点型的,所以除法的运算结果也是浮点型的。5/2=2.5;

  %运算符返回结果符号与被除数一致。-5%2=-1;5%-2=1

  二元加法运算符可以对两个数字做加法运算,也可以连接字符串。两个操作数中只要一个是字符串或者可以转换是可以转成字符串的对象,则进行字符串连接。

  两个操作数中有一个为对象时,日期对象通过toString()方法转换到原始值然后进行字符串连接。其他对象通过先valueOf()、toString()方法得到原始值和另一个操作数结合。 

1 console.log(1+2+'2');//"32"
2 console.log(1+(2+'2'));//"122"
3 console.log(null+"1");//"null1"
4 console.log(null+1);//1

 

  b、一元运算符(+、-,++、--)

  一元运算符(+、-)把操作数转换成数字(或者NaN),并返回这个数值。++、--运算符的操作数是一个左值(只能出现在赋值运算符的左边)(变量、数组元素、对象属性)

1 console.log(+null);//0
2 console.log(-undefined);//NaN
3 var i=1,j=i++;  //i=1;j=2
4 var i=1;j=++i;  //i=2,j=2

 

  c、关系运算符(返回结果总是布尔值)

  ==(相等)、!=  比较时允许类型转换

  ===(恒等) 、!==   不允许类型转化

  ===几个特例:null和undefined不相等、0和-0相等、NaN和任何数都不等(包括自己),两个引用指向同一个对象时相等。

  == 几个特例:null==undefined,对象和字符串比较,调用valueOf()、toString()方法转成成原始值比较。日期对象调用toString()方法转换。  

          两个操作数类型相同的时候直接比较,两个操作数类型不同时转换成数字进行比较。

1 var now=new Date();
2 console.log(now==now.toString());//true

   >、>=、<、<=比较的操作数可能是任意类型的,但是只有是数字、字符串才能比较(根据字符在Unicode编码表中的顺序)。两个操作数只要有一个不是字符串,则转换成数字比较。

   对象的转换规则:先使用valueOf()获取原始值,赋值使用toString()方法。

  Infinity比任何数都大、-Infinity比任何数都笑,0和-0相等,NaN和任何数比较都返回false;

1 console.log('one'<3);//false  'one'转成数字是NaN
2 console.log('1'<3);//true

  d、in运算符

  in运算符的左操作数是一个字符串或者可以转换成字符串。右操作数是一个对象。in运算符用来判断做操作数是不是对象的属性(包含原型上的 )。

1 var o={x:1,y:2};
2 console.log('x' in o);//true 
3 console.log("toString" in o);//true
4 console.log('z' in o);//false
5 
6 var  arr=[1,3];
7 console.log(0 in arr);//true
8 console.log('3' in arr);//false

  e、instanceof运算符

  instanceof运算符的做操作数是对象,右操作数是构造函数。如果对象的原型是构造函数的prototype属性(包含父链),则返回true; 

1 var o={x:1,y:2};
2 console.log(o instanceof Object);//true

 

  f、逻辑运算符

  &&、||、!  (与或非)  当操作数都是布尔值时,返回的是布尔值

  &&、||当操作数中有不是布尔值的,返回值不一定是布尔值;a&&b,当a是真的时候,直接返回b的值,当a是假的时候,直接返回 b;a||b,a为真,返回的a,a为假,返回b;

  !运算符的结果总是布尔值,!!x可以用来判断x的真假。

  if(a>b) a++;等价于 (a>b)&&(a++);

  function(o,p){

    p=p||{};//如果不给p传值,则p的值为空对象。

  }

 g、赋值运算符

  var i=1;

  a=b=0;//给多个变量赋值

  a+=b//a=a+b 其他的类似

 h、eval()函数

  eval()是JavaScript中的全局函数,接受一个参数,如果参数不是字符串,直接返回参数,如果是字符串,字符串会被当成JavaScript源代码执行,编译失败会报错,编译成功执行改代码,并返回最后一条语句的值,如果最后的语句没有值,返回undefined。

  eval('2+3');//5

 i、其他运算符

  1、三目运算符(第一个表达式的值为真,:前代码被执行,否则执行:后的代码)

1  x>0?x:-x;  //求x的绝对值

 

  2、typeof运算符

  typeof是一个一元运算符,操作数可以是任意类型的。返回下列的一个字符串。

  

  3、delete运算符

  delete 运算符用来删除对象的属性,删除成功返回true;delete运算的属性时一个左值,如果不是左值,则返回true,不进行其他操作。  

1 var o={x:2}
2 console.log(delete o.x);//true
3 console.log(o.x);//undefined

  4、void运算符

  void运算符是一个一元运算符,出现在操作数之前,操作数可以是任意类型,操作照常进行,但是会返回undefined。

1 var a=void 2;
2 console.log(a); //undefined

  5,逗号运算符

  逗号运算符是一个二元运算符,它会先计算左操作数,在计算右操作数,最终返回有操作数。  

1 var i,j,k;
2 var a=(i=1,j=2,k=3);
3 console.log(a); //3

二、JavaScript中常见的语句. 

  JavaScript中的语句是以分号结束的,表达式计算出一个值,但语句用来执行以使某个事件发生。

  a、空语句

  空允许没有内容,只有分号,当创建一个具有空循环体的循环时,空语句很有用 

1 var  arr=[];
2 //初始化一个数组
3 for(var i=0;i<4;arr[i++]=0){
4     ;
5 }

 

  b、声明语句

  1、var语句

  var语句用来声明变量,可以一次声明一个变量,也可以一次声明多个变量。用var声明的全局变量无法通过delete运算符删除。

  var i; //声明一个变量

  var i=1,j=2;//声明多个变量并初始化

  同时,var语句可以用在循环体内;

  for(var i=0;i<3;i++){  }//相当于var i; for(i=0;i<3;i++){ }

  for(var i in o){

    console.log(i)

  }

  2、function

  function关键字用来声明一个函数,函数可以写成表达式的形式;也可以写成语句的形式。  

1 //语句
2 function abc(){
3 
4 }
5 //表达式
6 var a=function(){
7      
8 }

  函数声明语句可以出现在最顶层代码中,也可以出现在函数体内。函数声明语句只能出现在函数的最顶层,函数定义不可以出现在while、if或其他循环语句中。

  函数声明语句和表达式包含相同的函数名,但两者仍有区别 ,两者都创建了新的函数对象。但是函数声明语句中的函数名是一个变量,变量指向函数对象,函数定义语句被显式的提前到脚本或者函数的顶部,在整个脚本或函数中是可以见,var声明的函数,只有变量声明提前,函数必须在其后调用;  

1 a();//报错
2 var a=function(){
3     console.log(123);
4 }

  3、条件语句

  if(表达式){

    //true执行这个语句块

  }else{

    //false 执行这个语句块

  }

  switch语句

  

    while语句

     while(表达式){

      //如果表达式的结果为真,一直执行该代码。

    }

      do/while语句

    do{

      //先执行一次,再根据表达式的值执行循环

    }while(表达式);

   for()循环

   for(初始化变量的值;循环条件;变量重新赋值){

    //先执行初始化,然后判断条件,重新赋值,然后判断条件,重新赋值。。。。

    }

   for/in

   for(var p in object){

      //遍历变量的可枚举属性(包含原型链上的 )

    }

   4、跳转语句

   break

   break语句用于跳出最内层循环或者switch语句。

   continue

   continue语句用于跳过本次循环,执行下一次循环。

   return 语句

   return语句用来指定函数调用时的返回值,return语句只出现在函数内部,当遇到return语句是,函数执行终止。如果return语句没有表达式,或者函数没有return语句,则调用时的返回值时undefined。

   throw 语句,

   throw语句用于显示抛出一个错误,如果找不到最近的异常处理程序,JavaScript会把异常当做程序错误处理。 

   throw expression中expression的值可以是任意类型的,可以抛出一个错误码数字或者一个可读的错误消息的字符串。 

     try/catch/finally语句

    try/catch/finally语句用于捕获代码中的异常,finally中代码肯定会执行。

         

1 var a=function(){
2     try{
3         throw new Error('代码出现错误');
4     }catch(e){
5         console.log(e.message);
6     }
7 }
8 a();//'代码出现错误'

  5、其他语句

  with语句

   with语句用来临时扩展作用域。

    with(obj){

        语句

    }

    把obj对象添加到作用域的头部。执行完代码块中的代码,把作用域链恢复原状。

   

    "use strict"语句

     "use strict" 对脚本和函数启动严格模式 

转载于:https://www.cnblogs.com/yiluhuakai/p/8520251.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux运行好麻烦,解析用Linux非常困难、必须用命令行、很老又丑陋及无法运行游戏...

很多刚接触Linux的人都有四大疑问&#xff1a;使用Linux非常困难、在Linux中&#xff0c;您必须使用命令行、Linux很老又丑陋、Linux无法运行计算机游戏&#xff0c;本文为您解析&#xff0c;打消您对Linux的误解。前言对于许多人来说&#xff0c;Linux是一个可怕的操作系统&am…

深度学习未来的三种范式

来源&#xff1a;AI前线作者&#xff1a;Andre Ye译者&#xff1a;平川策划&#xff1a;陈思深度学习是一个广阔的领域&#xff0c;它围绕着一种形态由数百万甚至数十亿个变量决定并不断变化的算法——神经网络。似乎每隔一天就有大量的新方法和新技术被提出来。不过&#xff0…

Nature重磅:软硬分离、图灵完备,清华首次提出“类脑计算完备性”

来源 | 清华大学计算机系校友会北京时间10月14日&#xff0c;清华大学计算机科学与技术系&#xff08;以下简称“计算机系”&#xff09;张悠慧团队、精密仪器系&#xff08;以下简称“精仪系”&#xff09;施路平团队与合作者在《Nature》杂志发文&#xff0c;首次提出“类脑计…

Linux sublime设置中文,CentOS 8.1下Sublime Text 3设置中文与Python环境

Sublime Text是一个跨平台的源代码编辑器&#xff0c;设计简单&#xff0c;速度快&#xff0c;支持许多编程语言和标记语言&#xff0c;你可以使用数千个可用于安装的插件&#xff0c;在RHEL 8/CentOS 8上的Sublime Text 3上解锁更多功能&#xff0c;本文假设你已在CentOS/RHEL…

java 正则首位8或者9的8位数字_从零开始学Python - 第025课:正则表达式的应用

正则表达式相关知识在编写处理字符串的程时&#xff0c;经常会遇到在一段文本中查找符合某些规则的字符串的需求&#xff0c;正则表达式就是用于描述这些规则的工具&#xff0c;换句话说&#xff0c;我们可以使用正则表达式来定义字符串的匹配模式&#xff0c;即如何检查一个字…

蝴蝶扇了一下翅膀,混沌就诞生了

科学无国界我们是知识的搬运工认真阅读下面的文章&#xff0c;并思考文末互动提出的问题&#xff0c;严格按照 互动&#xff1a;你的答案 格式在评论区留言&#xff0c;就有机会获得由四川人民出版社提供的优质科普书籍《未来科学简史》一本。我们耳熟能详的“蝴蝶效应”&#…

native.loadlibrary获取路径不对_【Python专题(三)】Python模块导入与路径管理

​前言Python项目的路径管理是一个让人头疼的问题。在写python项目的时候&#xff0c;明明 import了文件A&#xff0c;代码运行时却收到 ModuleNotFoundError&#xff0c;仔细一看&#xff0c;是引用路径不对&#xff0c;很是气人。又或者&#xff0c;当项目中出现了重名的pack…

前沿研究:21世纪工程领域的重大挑战 | 中国工程院院刊

本文选自中国工程院院刊《Engineering》2020年第7期作者&#xff1a;C.D. Mote Jr.来源&#xff1a;Engineering in the 21st Century: The Grand Challenges and the Grand Challenges Scholars Program[J].Engineering,2020,6(7):728-732.编者按近期&#xff0c;中国工程院外…

linux网站目录在哪_果核建站教程【二】环境安装与搭建第一个网站

有问题加群&#xff0c;一起讨论&#xff0c;一起学习群号&#xff1a;664592923昨天大家都能理解&#xff0c;那么今天我们就要进入实战教程咯。这节教程讲在本地搭建环境和安装程序。1本地环境的搭建之前有教程讲如何在Windows开启Linux系统&#xff0c;本来想直接让大家在Li…

北斗定位2.0版来了!普通人手机可用,全免费!

◎ 科技日报记者 张佳星1.0版解决快的问题&#xff0c;2.0版解决又快又准的问题&#xff0c;是1.0基础上的一个巨大升级&#xff01;10月14日&#xff0c;在北斗卫星导航系统高峰论坛上&#xff0c;中国信息通信研究院&#xff08;下简称“信通院”&#xff09;发布了北斗高精度…

做出明智的决策

无处不在的决策 在我们的一生中&#xff0c;会做出无数的决定或决策&#xff0c;有关于个人生活的&#xff0c;也有工作专业相关的&#xff0c;这发生在我们的每一天中。在这些决策中&#xff0c;有一些无关紧要&#xff0c;有一些却会产生长期影响&#xff0c;乃至导致颠覆性的…

如何看打印机的缓存区域_松下打印机好吗 松下打印机卡纸如何解决【详解】...

现在人们早已习惯了用手机记录下生活中的美好事物&#xff0c;因此拥有一台能打印照片的打印机成为这些人的选择&#xff0c;可随着现在人们对于打印机的需求量在不断的增加&#xff0c;市面上的打印机品牌也随之增多了起来。那么松下 打印机怎么样&#xff0c;松下打印机使用过…

Linux 蓝牙读写,实战Linux Bluetooth编程(三) HCI层编程

作者&#xff1a;Sam (甄峰)(HCI协议简介&#xff0c;HCI 在BlueZ中的实现以及HCI编程接口)1. HCI层协议概述&#xff1a;HCI提供一套统一的方法来访问Bluetooth底层。如图所示&#xff1a;从图上可以看出&#xff0c;Host Controller Interface(HCI) 就是用来沟通Host和Modul…

碰疼了会躲!这个植入“迷你大脑”的AI机器人,可感知疼痛,还能自我愈合...

来源&#xff1a;雷锋网人类为什么会产生痛觉&#xff1f;没错&#xff0c;是因为大脑中枢神经。和触觉、温度等感觉一样&#xff0c;我们对疼痛非常敏感&#xff0c;当受到外界“轻微”刺激时&#xff0c;体内的神经元产生相应的信号&#xff0c;并传输至大脑中的中枢神经系统…

哈佛大学惊人发现:新冠对人类未来影响巨大!

来源&#xff1a;北美观察家近日&#xff0c;哈佛大学公共卫生学院发了一篇Science&#xff1a;根据论文中的描述&#xff0c;无论是否能研发出疫苗&#xff0c;新冠病毒都可能会陪伴人类到2025年。那么&#xff0c;2025年以后人类能摆脱新冠病毒吗&#xff1f;不&#xff0c;只…

服务的分类与启动

一、服务的分类 查询已安装的服务 RPM包安装的服务 [rootbogon ~]# chkconfig --list# 查看服务自启动状态&#xff0c;可以看到所有RPM包安装的服务 # 此命令不可以查看源码包安装的服务 注&#xff1a;1、2、3、4、5、6是运行级别 源码包安装的服务 查看服务安装位置&#xf…

在Linux里awk与sed的区别,linux awk和sed讲解

sed 工具简介在了解了一些正规表示法的基础应用之后&#xff0c;再来呢&#xff1f;呵呵&#xff5e;两个东西可以玩一玩的&#xff0c;那就是 sed 跟 awk 了&#xff01;这两个家伙可是相当的有用的啊&#xff01;举例来说&#xff0c;鸟哥写的 logfile.sh 分析登录文件的小程…

python编辑器_推荐一款Python编辑器,集Pycharm和Sublime优点于一身的王者

编程里面的编辑器就像是武林大会里面的高手&#xff0c;每一年都有新秀&#xff0c;黑马出现&#xff01;比如有练习霸道的天罡之气的榜首Pycharm&#xff0c;力量雄厚霸道战斗力极强&#xff0c;但是对斗气消耗很大&#xff0c;占内存大而且启动速度有点慢&#xff01;还有练习…

因果解释能够对规则进行解释吗?

来源&#xff1a;《哲学动态》2017年第10期作者&#xff1a;初维峰&#xff08;西安交通大学人文社会科学学院&#xff09;本文受中国博士后科学基金面上资助项目“当代西方因果解释理论研究”(2017M613160)资助。在现实生活中&#xff0c;我们不仅要对某一事件进行解释&#x…

okhttp post json 数据_使用python抓取App数据

App中的数据可以用网络爬虫抓取么答案是完全肯定的&#xff1a;凡是可以看到的APP数据都可以抓取。下面我就介绍下自己的学习经验和一些方法吧 本篇适合有过web爬虫基础的程序猿看没有的的话学的可能会吃力一些App接口爬取数据过程使用抓包工具手机使用代理&#xff0c;app所有…