javaScript常用运算符和操作符总结

类别

操作符

算术操作符 +、 –、 *、 /、 %(取模)
字符串操作符 + 字符串连接   +=字符串连接复合
布尔操作符 !、 &&、  || 
一元操作符 ++ 、 -- 、  +(一元加)、    -(一元减)
关系比较操作符 < 、 <= 、 >  、>=、   !=  、 == 、  === 、  !== 
按位操作符 ~ 按位非    &按位与     | 按位或     ^按位异或    <<左移    >>有符号右移      >>>无符号右移
赋值操作符 = 、   复合赋值(+=、-=、*=、%=)   复合按位赋值(~=、&=、|=、^=、<<=、>>=、>>>=)
对象操作符 .属性访问、[]属性或数组访问、 new调用构造函数常见对象、delete变量属性删除、void(返回undefined)、in判断属性、instanceof原型判断
其它操作符 ?: 条件操作符、,逗号操作符、()分组操作、typeof类型操作符

注意事项:

1. 算数操作符

1.1 除了加号(+)之外,如果操作数不是Number类型,会自动先调用Number()将其转换为Number类型再进行计算。

1.2 除号(/)和取模(%)并不会区分整数和浮点数,都会自动转化为浮点数,比如 9 / 2 = 4.5 而不是4,5.3 % 3 = 2.3 而不是2。

1.3 任意运算,只要操作数含NaN,结果就是NaN。但并不是结果为NaN就一定有一个操作数为NaN,比如0/0也返回NaN。

2. 字符串操作符

2.1 字符串连接符号(+)相当于concat()函数,会将操作数据转化为字符串,再连接。在字符串和数值型进行+号运算时,会将数值型转为字符串。

3. 布尔操作符

3.1   &&逻辑与常被应用判断一个变量或属性是否有定义,例如:

if(object && object.name && object.name = 'name'){
//这里会首先判断object存在,不存在的话就不会解析object.name从而阻止错误的发生,同样,也只有object.name存在,才会去比较这个值。
}
3.2   ||逻辑或常被应用提供默认值的情况,和?问号操作符类似。例如
function Fn(obj){
  obj = obj || {};
//这里如果调用Fn未传入obj,则会自动给obj赋值为undefined,然后因为undefined的相应Boolean值为false,
//所以会将一个空对象{}赋值给obj,如果调用传入了obj,则因为任意对象的Boolean值为true,
//所以就不会取后面的{},从而达到给obj一个默认值{}的效果。
}

4. 一元操作符

4.1 前置自增(减)会先自增(减)再参与其它运算,后置先参与其它运算再自增(减)。

4.2 对于不是Number类型的值进行自增自减时会先将其隐式转换为Number类型,然后再自增(减)。

5. 关系比较操作符

5.1 比较双方都为字符串时,则会从前往后逐个比较字符编码值,只要有较大者就终止比较,不会往后进行。

5.2 比较双方有一个Number类型,则会将非Number类型数据转为Number类型值再比较。

5.3 操作符是对象时,调用valueOf()(如果没有,就调用toString()),再将结果进行比较。

5.4 任何数和NaN比较都会返回false.

6. 对象操作符

6.1 通过[]可以访问名称是一个变量或含有特殊字符的属性,名称为普通确定值时用.点号访问对象属性。

6.2 new 调用构造函数创建一个对象,在构造函数内部的this被指向这个新创建的对象

6.3 delete,删除变量或属性,(变量可以看成是全局对象或执行环境的一个属性)

7. 其它操作符

7.1 typeof是一个操作符,而不是函数,返回一个字符串值,(有些会根据浏览器极其版本不同而略有不同)

类型

typeof值

类型

typeof值

类型

typeof值

Undefined 'undefined' Null 'object' Boolean 'boolean'
Number 'number' String 'string' 内置Function对象的实例 'function'

typeof一般用来判断简单数据类型,如果是对象类型,因为大部分返回的都是object,实际一般不会使用;

而instanceof的判断也需要满足同一个上下文的条件,否则也会出错,

8.常用方式:

8.1 使用一元加号+直接隐式转换为Number类型。  例如:console.info(+true);  //1,一元操作符,转换为数值1

8.2 使用加空字符串可直接隐式转为String类型。     例如:console.info(''+true);  //true,隐式转换为字符串'true'

8.3 使用双重逻辑非!!隐式转换为Boolean类型。      例如:var a='a’;   console.info(!!a);   //true  两次取反,将其隐式转换为boolean类型

8.4 使用逻辑与&&来检测对象或其属性是否存在并进行后续操作。   例如:object && object.name && object.name = 'name';

8.5 使用逻辑或||来给函数参数提供默认值,也常用?问号条件操作符提供默认值。  例如:  obj = obj || {};

8.6 使用花括号{}来定义对象字面量,JSON数据格式和代码块。   例如: var obj = {};

8.7 使用中括号[]来定义数组字面量,JSON数据格式,访问数组,访问名称是变量或特殊字符的属性。  例如: obj[this.index]

8.8 按位运算可应用一些场所:如不使用中间变量直接交换两个数值、判断奇数和偶数、MD5加密等等。

javaScript常用运算符和操作符总结的更多相关文章

  1. javascript(六)运算符

    运算符概述 JavaScript中的运算符用于算术表达式. 比较表达式. 逻辑表达式. 赋值表达式等.需要注意的是, 大多数运算符都是由标点符号表示的, 比如 "+" 和" ...

  2. JavaScript 常用功能总结

    小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...

  3. JavaScript instanceof 运算符深入剖析

    简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...

  4. javascript常用代码大全

    http://caibaojian.com/288.html    原文链接 jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...

  5. Javascript 常用函数【3】

    jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_category").each(function() { if ($(t ...

  6. SQL Server调优系列基础篇(常用运算符总结)

    原文:SQL Server调优系列基础篇(常用运算符总结) 前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握 ...

  7. JavaScript instanceof 运算符深入剖析【转载】

    http://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/   instanceof 运算符简介 在 JavaScript ...

  8. JavaScript中的typeof操作符用法实例

    在Web前端开发中,我们经常需要判断变量的数据类型.鉴于ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof就是负责提供这方便信息的操作符.   对一个值使用t ...

  9. JavaScript位运算符 2

    按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是“位”: 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10进制数据2在计算机内 ...

随机推荐

  1. 第二章 python如何运行程序

    一.python解释器介绍 Python解释器是一种让程序运行起来的程序.实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层.当Python包安装在机器上后,它包含了一些最小化的组件:一个解释器和 ...

  2. SpringBoot从入门到精通一(idea优雅搭建SpringBoot项目)

    前言 在没有SpringBoot之前,我们搭建的是SSM(SpingMVC+Spring+Mybatis)项目,在搭建SSM项目的时候,我们要经过一系列的繁琐配置,例如:application,web ...

  3. Hadoop —— 单机环境搭建

    一.前置条件 Hadoop的运行依赖JDK,需要预先安装,安装步骤见: Linux下JDK的安装 二.配置免密登录 Hadoop组件之间需要基于SSH进行通讯. 2.1 配置映射 配置ip地址和主机名 ...

  4. spring 5.x 系列第12篇 —— 整合memcached (代码配置方式)

    文章目录 一.说明 1.1 XMemcached客户端说明 1.2 项目结构说明 1.3 依赖说明 二.spring 整合 memcached 2.1 单机配置 2.2 集群配置 2.3 存储基本类型 ...

  5. 【java自定义注解1】java自定义注解-属性

    关于自定义注解,以前项目种应用的不多,最近看新项目过程中发现了挺多自定义注解相关内容,使用起来比较巧妙,于是 总结了两种方式,记录如下: 第一种:结合反射进行属性注入,代码如下: 1.定义一个注解: ...

  6. maven_nexus私服搭建

    搭建很简单,但是新版本运行方式有所区别,于此记录一下: 1.下载程序包:http://www.sonatype.org/nexus/downloads/ 官网比较慢,下了一小时.期间在csdn花了一积 ...

  7. 一道关于String的面试题,新鲜出炉,刚被坑过,趁热!!

    很多人都会答错的一道关于String的题目,究竟有什么难度? 我们一起来看一道关于String的面试题,准确说是改编的面试题! 准备好啦?在放大招之前先来一个小招式 String s1 = new S ...

  8. python模块之:paramiko

    1. 介绍: paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来实现.安装: ...

  9. python 微信红包生成器

    #红包生成思路#200 块钱 10个红包#0-200 的一个轴,随机取9个点,分成10段, 每一段的值表示一个红包的大小 #把输入的 money值 * 100 拿到的数值就是分, 不用再考虑单位是元的 ...

  10. 修改SearchBar的取消按钮Cancel为中文

    一开始在网上看到很多方法都是循环,好吧,我也循环 创建UISearchBar的时候循环,不行 用searchBarTextDidBeginEditing事件去循环,也不行 无语了,搜索了Baidu第一 ...