javaScript常用运算符和操作符总结
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常用运算符和操作符总结的更多相关文章
- javascript(六)运算符
运算符概述 JavaScript中的运算符用于算术表达式. 比较表达式. 逻辑表达式. 赋值表达式等.需要注意的是, 大多数运算符都是由标点符号表示的, 比如 "+" 和" ...
- JavaScript 常用功能总结
小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...
- JavaScript instanceof 运算符深入剖析
简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...
- javascript常用代码大全
http://caibaojian.com/288.html 原文链接 jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...
- Javascript 常用函数【3】
jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_category").each(function() { if ($(t ...
- SQL Server调优系列基础篇(常用运算符总结)
原文:SQL Server调优系列基础篇(常用运算符总结) 前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握 ...
- JavaScript instanceof 运算符深入剖析【转载】
http://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/ instanceof 运算符简介 在 JavaScript ...
- JavaScript中的typeof操作符用法实例
在Web前端开发中,我们经常需要判断变量的数据类型.鉴于ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof就是负责提供这方便信息的操作符. 对一个值使用t ...
- JavaScript位运算符 2
按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是“位”: 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10进制数据2在计算机内 ...
随机推荐
- 第二章 python如何运行程序
一.python解释器介绍 Python解释器是一种让程序运行起来的程序.实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层.当Python包安装在机器上后,它包含了一些最小化的组件:一个解释器和 ...
- SpringBoot从入门到精通一(idea优雅搭建SpringBoot项目)
前言 在没有SpringBoot之前,我们搭建的是SSM(SpingMVC+Spring+Mybatis)项目,在搭建SSM项目的时候,我们要经过一系列的繁琐配置,例如:application,web ...
- Hadoop —— 单机环境搭建
一.前置条件 Hadoop的运行依赖JDK,需要预先安装,安装步骤见: Linux下JDK的安装 二.配置免密登录 Hadoop组件之间需要基于SSH进行通讯. 2.1 配置映射 配置ip地址和主机名 ...
- spring 5.x 系列第12篇 —— 整合memcached (代码配置方式)
文章目录 一.说明 1.1 XMemcached客户端说明 1.2 项目结构说明 1.3 依赖说明 二.spring 整合 memcached 2.1 单机配置 2.2 集群配置 2.3 存储基本类型 ...
- 【java自定义注解1】java自定义注解-属性
关于自定义注解,以前项目种应用的不多,最近看新项目过程中发现了挺多自定义注解相关内容,使用起来比较巧妙,于是 总结了两种方式,记录如下: 第一种:结合反射进行属性注入,代码如下: 1.定义一个注解: ...
- maven_nexus私服搭建
搭建很简单,但是新版本运行方式有所区别,于此记录一下: 1.下载程序包:http://www.sonatype.org/nexus/downloads/ 官网比较慢,下了一小时.期间在csdn花了一积 ...
- 一道关于String的面试题,新鲜出炉,刚被坑过,趁热!!
很多人都会答错的一道关于String的题目,究竟有什么难度? 我们一起来看一道关于String的面试题,准确说是改编的面试题! 准备好啦?在放大招之前先来一个小招式 String s1 = new S ...
- python模块之:paramiko
1. 介绍: paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来实现.安装: ...
- python 微信红包生成器
#红包生成思路#200 块钱 10个红包#0-200 的一个轴,随机取9个点,分成10段, 每一段的值表示一个红包的大小 #把输入的 money值 * 100 拿到的数值就是分, 不用再考虑单位是元的 ...
- 修改SearchBar的取消按钮Cancel为中文
一开始在网上看到很多方法都是循环,好吧,我也循环 创建UISearchBar的时候循环,不行 用searchBarTextDidBeginEditing事件去循环,也不行 无语了,搜索了Baidu第一 ...