运算符


 
1、算术运算符:+、-、*、/、%、++、--
 
    单目(操作数为一个且为变量): i++、i--、++i、--i;
    双目:+、-、*、/、%;
 
双目其中 -*/%
    如果运算符两侧的值为数字型,可进行正常的数值运算;console.log(3-1);//2
    如果存在纯数字字符串(如:"12"),计算机自动转其为数字型进行运算;console.log("3"-1);//2
    只要有一侧为非纯数字字符串,结果为NaN。console.log("3a"-1);//NaN
        NaN:非数字类型。
                    特点:① 涉及到的 任何关于NaN的操作,都会返回NaN   ② NaN不等于自身。
双目 +
    如果运算符两侧的值为数字型,可进行正常的数值运算;console.log(3+1);//4
    只要有一侧为字符串,表达连接。console.log("3a"+1);//3a1
       (1)“%”取余运算符,两个数相除,取余数。
   A = 10 % 3;  // A = 1,如果余数不为0,则两个不能整除
   A = 10 % 2;  // A = 0,如果余数为0,则两个数能除尽
       (2)“++”加1运算符、自增1
              “++”可以作前缀(++i),也可以作后缀(i++)。
  (3)“--”减1运算符,自减1
              “--”可以作前缀(--i),也可以作后缀(i--)。
    i++和++i的区别:
         相同点:都让变量自增1;
         不同: i++    先将i的值赋给整个表达式,i再自增1;
           ++i    先i自增1,再将i的值赋给整个表达式。
例如:var i = 2;
        var j = i++;
        console.log(i);   //3
        console.log(j);   //2
        var i = 2;
        var j = ++i;
        console.log(i);//3
        console.log(j);//3
2、赋值运算符:+=、-=、*=、/=、%=
        “+=”先加后等。如:a += 10  //等同于  a = a + 10
       “-=”先减后等。如:a -= 10   //等同于  a = a - 10
       “*=”先乘后等。如:a *= 10  //等同于  a = a * 10
       “/=”先除后等。如:a /= 10   //等同于  a = a / 10
        var i = 1;
            i += 2;
      console.log(i);//3
        var i = -2;
            i -=2;
      console.log(i);//-4
3、字符串运算符:+、+=
字符串只能进行“连接”运算,不能进行其它运算。
       var a = “abc”;
       var b = a + “bcd”;   // 结果b = a + “bcd” = “abc” + “bcd” = “abcbcd”
       var a = “abc”;
       a += 10;   // 结果a = a + 10 = “abc” + 10 = “abc10”
4、关系(比较)运算符:>、<、>=、<=、==、!=(不等于)、===(全等)、!==(全不等)
       比较运算符的运算结果是布尔值(true或false)。
       A = 10 > 20;       // 结果A=false
       A = 20>=20;       // 结果A=true
       A = 10%2 == 0;    // 结果A=true
       A = 10%2 == “0”;  // 结果A=true
       A = 10%3 != 0;    // 结果A=true
       A = 10%2 === “0”;  //结果A=false
            console.log(i = 10 >=9);
       “=”是赋值号。如:a = 10
       “==”等于。只比较两个变量的值,而不管类型。只要值一样,就返回true,否则返回false。
       “===”全等于。既比较变量,也判断类型。如果类型和值都一样,返回true,否则返回false。
                 console.log(a=10 >= 9);//ture
                 console.log(null == undefined);//ture
                 console.log(null === undefined);//false
                  console.log(null == 0);//false
字符串的比较:比较的是ASCII码值(a:97    b:98    c:99 ...    A:65    B:66    C:67 ...)/从左到右比较,直到比较出结果;
                 console.log("a" > "b");//false
5、逻辑运算符:&&(且)、||(或)、!(非)
       逻辑运算符的运算结果有两个true或false。
      “&&”逻辑与(并且关系)。如果左右两个两个条件同时满足时,则结果为true,否则,结果为false。
  “||”逻辑或。左右两个条件,只要有一个满足,则返回true,否则,返回false。
  “!”取反运算。!true = false  、   !false = true  、 !100 = false
为假的值:0    null    undefined    ""    false
计算机自身短路情况:
第一个条件 && 第二个条件       如果第一个条件为假则计算机出现短路现象 不会继续判断第二个条件
第一个条件 || 第二个条件       如果第一个条件为真则计算机出现短路现象 不会继续判断第二个条件
例如:
    console.log(6>7 && 5);//false
    console.log(5 && 6<7);//ture
    console.log(6<7 && 5);//5
    console.log(0 && 6>5);//0
 
6、三目(元)运算符:? : 
所谓“三目运算符”就是指三个操作数。
       语法:条件表达式 ? 结果1 : 结果2
       含义:如果条件为true,则执行“结果1”的代码;如果条件为false,则执行“结果2”的代码。
       其实:三目运算符,就是if else的变形形式。
 

JavaScript 六大类运算符(详细~)的更多相关文章

  1. 【学习笔记】:JavaScript基础知识超详细总结!

    目录 一.JavaScript的实现 二.JavaScript语言的特点 三.JS与HTML如何结合 四.JS中的数据类型 四.JS的原始数据类型 2.JS的引用数据类型 五.JS引用数据类型之函数 ...

  2. Javascript定义类(class)的三种方法

    将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...

  3. JavaScript基础——使用运算符

    JavaScript运算符允许你改变一个变量的值.你已经熟悉了用于赋值给变量的=运算符.JavaScript提供了几种不同的运算符,它们可以划分为两大类:算数运算符和赋值运算符. 1.算数运算符 你可 ...

  4. [转]Javascript定义类的三种方法

    作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html 将近2 ...

  5. React Native:使用 JavaScript 构建原生应用 详细剖析

    数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用——就在今天,Beta 版的仓库释出了! 基于 Pho ...

  6. JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 [TOC] 一.缘由 由于在ES6之前,JavaScript中没有定义类(class)语法.导致大家用各种五花八门的办法来定义类,代码风格不统一.而且对于模拟面向对象的三大支柱& ...

  7. [原创]Javascript模拟“类”的综合实现方式以及部分细节【截至ES6】

    [原创]Javascript模拟“类”的综合实现方式以及部分细节[截至ES6] 前言   最近几个旧项目里使用的图片编辑插件出现Bug, 经Review 后确定需要在其内外均做些改动,但是头疼的发现部 ...

  8. [译]JavaScript需要类吗?

    [译]JavaScript需要类吗?   原文:http://www.nczonline.net/blog/2012/10/16/does-javascript-need-classes/ 译者注:在 ...

  9. Python与Javascript相互调用超详细讲解(2022年1月最新)(三)基本原理Part 3 - 通过C/C++联通

    目录 TL; DR python调javascript javascript调python 原理 基于Node.js的javascript调用python 从Node调用python函数 V8 嵌入P ...

随机推荐

  1. Confluence 6 手动备份站点

    Confluence 被配置自动备份数据,使用压缩的 XML 格式.同时你也可以通过 Confluence 的 管理员控制台(Administration Console)手动进行备份. 你需要具有 ...

  2. Guideline 5.2.1 - Legal - Intellectual Property 解决方案

    最近在上架公司公司项目的时候遇到这个问题什么5.2.1 然后去了解发现最近不少人都遇到了这个问题.先说一下 我上架的APP是一个医疗的APP然后说需要什么医疗资质,估计是账号的公司资质不够吧.后面和苹 ...

  3. bat如何创建多级文件夹(在android设备中)

    在android设备中要创建多个或者多级文件夹时,手动去创建费时费力(有点傻),一个bat文件就能很好的实现这个功能. 1.首先创建同级多个文件夹且在该文件夹下生成一个文件 @echo off ech ...

  4. 【python】python版本升级2.6.6到2.7.3(CentOS release 6.2)

    一. 升级python到2.7.3 wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz tar -zxvf Python-2.7. ...

  5. python网络爬虫笔记(九)

    4.1.1 urllib2 和urllib是两个不一样的模块 urllib2最简单的就是使用urllie2.urlopen函数使用如下 urllib2.urlopen(url[,data[,timeo ...

  6. windows 下命令行启动停止mysql

    MySQL比较好玩一点就是它可以用多种方式启动,当然它也可以用多种方式关闭.下面我就mysql的几种启动方式简单的谈一谈,希望可以给大家提供一些参考. 第一种,用mysqld-nt来启动. 在没有进行 ...

  7. Play框架--初学笔记

    目录结构 web_app 根目录 | sbt SBT Unix 批处理脚本用于启动sbt-launch.jar | sbt.bat SBT Windows 批处理脚本用于启动sbt-launch.ja ...

  8. Centos6中Docker使用中国官方镜像加速

    vi /etc/sysconfig/docker 增加如下内容: other_args="--registry-mirror=https://registry.docker-cn.com&q ...

  9. Git 从 master 分支拉新分支开发

    一. 切换到被copy的分支(master),并且从远端拉取最新版本 $git checkout master $git pull 二.从当前分支拉copy开发分支 $git checkout -b ...

  10. bzoj 2832

    题解: 首先有一个比较显然的事情是如果我们确定了买的次数这道题就可以简单的贪心了 但是答案和买的次数是什么关系呢.. 好像是可以三分的 所以应该是单峰的 这里用了模拟退火,而且是没有处理失败情况的模拟 ...