JavaScript中常用的运算符小结

一、一元运算符
1、delete 运算符:删除对以前定义的对象属性或方法的引用。例如:
var o=new Object;
o.name="superman";
alert(o.name); //输出 "superman"
delete o.name;
alert(o.name); //输出 "undefined"
删除了name属性,将其设置为undefined(即创建的未初始化的变量的值)。delete不能删除开发者未定义(即ECMAScript定义)的属性和方法。
例如,下面的代码将发生错误:delete o.toString();
2、void 运算符: 对任何值都返回undefined。该运算符通常用于避免输出不应该输出的值。
例如:在HTML页面中 <a href="javascript:window.open('about:blank')">Click Me</a>
点击该链接,网页中的链接消失,显示"[object]" (IE中,火狐中显示"[object Window]",Google中还是该链接)。因为window.open()方法返回了对新打开的窗口的引用。然后该对象被转换成要显示的字符串。要避免这种结果,可以用 void 运算符调用 window.open() 函数:
<a href="javascript:void(window.open('about:blank'))">Click Me</a>
这使window.open()调用返回undefined,它不是有效值,不会显示在浏览器窗口中。
3、前增量/前减量运算符:与C中的用法一样。运算都发生在计算表达式之前。如:++i; --i 。
4、后增量/后减量运算符:后缀式运算符是在计算过包含它们的表达式后才进行增量或减量运算。如:i++; i-- 。
5、一元加法和一元减法
一元加法本质上对数字无任何影响: var iNum=25; iNum=+iNum; alert(iNum); //输出25
一元加法运算符对对字符串进行操作时,它计算字符串的方式与 parseInt() 相似,主要的不同是对以"0x"开头的字符串(表示十六进制数字),一元运算符才能将它转换成十进制的值。因此,用一元加法转换"010",得到的总是10,而"0xB"将被转换成11。
var sNum="25"; alert(typeof sNum); //输出 "string"
var iNum=+sNum; alert(typeof iNum); //输出 "number"
一元减法就是对数值求负,与一元加法运算符相似,一元减法运算符也会把字符串转换成近似的数字,此外还会对该值求负。
var sNum = "25"; alert(typeof sNum); //输出 "string"
var iNum = -sNum; alert(iNum); //输出"-25"
alert(typeof iNum); //输出 "number"
二、位运算符:与二进制有关的一系列运算符,实际操作中貌似不怎么用,就略过了……
位运算符NOT由否定号(~)表示。
位运算符AND由和号(&)表示。
位运算符OR由符号(|)表示。
位运算符XOR由符号(^)表示。
左移运算由两个小于号表示(<<)。
有符号右移运算符由两个大于号(>>)表示。
无符号右移由三个大于号(>>>)表示。
三、Boolean运算符
Boolean运算符有三种,即NOT、AND 和 OR。
1、逻辑NOT,用感叹号(!)表示。该运算符通常用于控制循环。与逻辑OR和逻辑AND运算符不同的是,逻辑NOT运算符返回的一定是Boolean值。逻辑NOT运算符的行为如下:
如果运算数是对象,返回false。
如果运算数是数字0,返回true。
如果运算数是0意外的任何数字,返回false。
如果运算数是null,返回true。
如果运算数是NaN,返回true。
如果运算数是undefined,发生错误。
例: var b = true;
while(!b){ …… }
2、逻辑 AND 运算符,用双和号(&&)表示。结果为 true 时只有一种情况:true && true = true;
逻辑AND运算的运算数可以是任何类型的,不止是Boolean值。如果某个运算数不是原始的Boolean型值,逻辑AND运算不一定返回Boolean值:
如果一个运算数是对象,另一个是Boolean值,返回该对象。
如果两个运算数都是对象,返回第二个对象。
如果某个运算数是null,返回null。
如果某个运算数是NaN,返回NaN。
如果某个运算数是undefined,发生错误。
如果第一个运算数是false,那么无论第二个运算数的值是什么,结果都不可能为true。
3、逻辑OR运算符,用双竖线(||)表示。结果为false的情况只有一种:false || false=false; 其他情况均为true。
与逻辑AND运算符相似,如果某个运算数不是Boolean值,逻辑OR运算并不一定返回Boolean值:
如果一个运算数是对象,另一个是Boolean值,返回该对象。
如果两个运算数都是对象,返回第一个对象。
如果某个运算数是null,返回null。
如果某个运算数是NaN,返回NaN。
如果某个运算数是undefined,发生错误。
逻辑OR也是简便运算,对于逻辑OR运算符来说,如果第一个运算数值为true,就不再计算第二个运算数。
四、乘性运算符
1、乘法运算符,用星号(*)表示,用于两个数相乘。但在处理特殊值时,ECMAScript中的乘法还有一些特殊行为:
如果运算数都是数字,执行常规的乘法运算,如果结果太大或太小,那么生成的结果就是Infinity或-Infinity。
如果某个运算数是NaN,结果为NaN。
Infinity 乘以0,结果为NaN。
Infinity 乘以0以外的任何数字,结果为Infinity或-Infinity,由第二个运算数的符号决定。
2、除法运算符,用斜线(/)表示,用第二个数除第一个数。对于特殊值,特殊行为如下:
如果运算数都是数字,执行常规的触发运算,如果结果太大或太小,那么生成的结果是Infinity或-Infinity。
如果某个运算数是NaN,结果为NaN。
0除一个非无穷大的数字,结果为NaN。
Infinity被0以外的任何数字除,结果为Infinity或-Infinity,由第二个运算数的符号决定。
3、取模运算符,用百分号(%)表示。如果运算数都是数字,执行常规算术除法运算,返回余数。特殊行为:
如果被除数是 Infinity,或者除数是0,结果为NaN。
如果除数是无穷大的数,结果为被除数。
如果被除数为0,结果为0。
五、加性运算符
1、加法运算符(+),特殊行为:
某个运算数是NaN,结果为NaN。
Infinity 加-Infinity,结果为NaN。
如果某个运算数是字符串,那么采用下列规则:
如果两个运算数都是字符串,把第二个字符串连接到第一个字符串上。
如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串。
2、减法运算符(-),如果两个运算数都是数字,将执行算术减法。特殊规则:
如果运算数是NaN,结果为NaN。
某个运算数不是数字,结果为NaN。
六、关系运算符
关系运算符小于、大于、小于等于和大于等于执行的是两个数的比较运算,比较方式与算术比较运算相同。每个关系运算符都返回一个Boolean值。
对于字符串,第一个字符串中每个字符的代码都会与第二个字符串中对应位置上的字符的代码进行数值比较。
1、大写字母的代码都小于小写字母的代码,所以要得到按照真正的字母顺序比较结果,必须把两个运算数转换成相同的大小写形式,再进行比较。
2、在比较两个字符串形式的数字时,比较的是它们的字符代码。
3、比较一个字符串和数字,ECMAScript都会把字符串转换为数字,然后按照数字顺序比较它们。如果字符串不能转换成数字,那么返回NaN,任何包含NaN的关系运算都要返回false。因此,这样会返回false。
七、等性运算符
1、等号(==) 和非等号(!=),为确定两个运算数是否相等,这两个运算符都会进行类型转换。执行类型转换的基本规则如下:
如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。False转换成0,true转换成1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查等性之前,要尝试把对象转换成字符串(调用toString()方法)。
如果一个运算数是对象,另一个是数字,在检查等性之前,要尝试把对象转换成数字。
在进行比较时,该运算符还遵守下列规则:
值null和undefined相等。
在检查相等性时,不能把null和undefined转换成其他值。
如果某个运算数是NaN,等号将返回false,非等号将返回true。即使两个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN。
如果两个运算数都是对象,那么比较的是他们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。


2、全等号和非全等号
等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是他们在检查相等性前,不执行类型转换。
全等号由三个等号(===)表示,只有在无需类型转换运算数就相等的情况下,才返回true。
var sNum="55"; var iNum=55; alert(sNum==iNum); //输出 "true"
alert(sNum===iNum); //输出 "false"
非全等号由两个感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回true。
var sNum="55"; var iNum=55; alert(sNum != iNum); //输出 "false"
alert(sNum !== iNum); //输出 "true"
八、其他运算符
1、条件运算符,即三元运算符 : variable = boolean_expression ? true_value : false_value;
2、赋值运算符(=) 复合赋值运算符:+=、-=、*=、/=、%=、<<=、>>=、>>>=
3、逗号运算符 用逗号运算符可以在一条语句中执行多个运算。 如: var iNum1=1,iNum2=2;

(0)

相关推荐

  • js利用与或运算符优先级实现if else条件判断表达式

    复制代码 代码如下: <script type="text/javascript"> /******************************************************************* 利用运算符优先级实现ifelse表达式 result = expression1 && expression2 当且仅当两个表达式的值都等于 True 时, result 才是 True. 如果任一表达式的值等于 False, 则 res

  • 浅谈JavaScript中运算符的优先级

    运算符优先级 JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出JavaScript运算符.具有相同优先级的运算符按从左至右的顺序求值. 运算符 描述 . [] () 字段访问.数组下标.函数调用以及表达式分组 ++ -- - ~ ! delete new typeof void 一元运算符.返回数据类型.对象创建.未定义值 * / % 乘法.除法.

  • js只执行1次的函数示例

    在我们日常开发的时候,经常会碰到一种这样的情况:想让某个函数只执行一次,特别是在一些循环或定时执行的时候. 废话不多说,直接上代码: function runOnce(fn, context) { //控制让函数只触发一次 return function () { try { fn.apply(context || this, arguments); } catch (e) { console.error(e);//一般可以注释掉这行 } finally { fn = null; } } } /

  • JS中三目运算符和if else的区别分析与示例

    今天写了一个图片轮播的小demo,用到了判断 先试了一下if else,代码如下: 复制代码 代码如下: if(n >= count-1){ n =0; }else{ n ++; } 随后代码写完了,准备优化一下代码,将此段改成了三目运算符的写法 复制代码 代码如下: n = n >= (count-1) ? n=0 : n++ 结果完全不同 随后研究了一下这两者的区别,总结为一句话:三目运算有返回值,if else没有返回值 做了如下测试: 复制代码 代码如下: var n=1;  if(n

  • js的逻辑运算符 ||

    因而查询一下js的介绍: 1.逻辑或运算符||: 当运算符||的两个运算数都是布尔值,它对这两个运算数执行布尔OR操作. 它先计算第一个运算数,如果这个表达式的值可以被转换成true,那么它就返回左边这个表达式的值.否则计算第二个运算数 即使||运算符的运算数不是布尔值,任然可以将它看作布尔OR运算,因为无论它返回的值是什么类型,都可以被转换为布尔值. 而且另一方面,对非布尔型的运算数使用了||,这是利用了它对非布尔型的值会将其返回的特性.该运算符的这一用法通常是选取一组备选值中的第一个定义了的

  • Javascript 按位取反运算符 (~)

    复制代码 代码如下: result = ~ [数字] 所有一元运算符(如 ~ 运算符)都按照下面的规则来计算表达式的值: 复制代码 代码如下: 1. 如果应用于未定义的表达式或 null 表达式,则会引发一个运行时错误.2. 将对象转换为字符串.3. 如果可能,将字符串转换为数字. 否则,将引发运行时错误.4. 布尔值被视为数字(如果为 false,则为 0:如果为 true,则为 1). 运算符将应用于结果数字. ~ 运算符查看表达式的二进制表示形式的值,并执行位非运算. 表达式中的任何一位为

  • js 与或运算符 || && 妙用

    首先出个题:如图: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头: 成长速度为10显示2个箭头: 成长速度为12显示3个箭头: 成长速度为15显示4个箭头: 其他都显示都显示0各箭头. 用代码怎么实现? 差一点的if,else: Js代码 复制代码 代码如下: var add_level = 0; if(add_step == 5){ add_level = 1; } else if(add_step == 10){ add_level = 2; } else if(add_step

  • javascript typeof的用法与typeof运算符介绍[详细]第1/2页

    经常会在js里用到数组,比如 多个名字相同的input, 若是动态生成的, 提交时就需要判断其是否是数组. if(document.mylist.length != "undefined" ) {} 这个用法有误. 正确的是 if( typeof(document.mylist.length) != "undefined" ) {} 或 if( !isNaN(document.mylist.length) ) {} typeof的运算数未定义,返回的就是 "

  • javascript三元运算符用法实例

    三元运算符用法实例: 如名字表示的三元运算符需要三个操作数. 语法是 条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2.满足条件时结果1否则结果2. 复制代码 代码如下: <script type="text/javascript"> var b=5; (b == 5) ? a="true" : a="false"; document.write(" --------

  • JavaScript中常用的运算符小结

    一.一元运算符 1.delete 运算符:删除对以前定义的对象属性或方法的引用.例如: var o=new Object; o.name="superman"; alert(o.name); //输出 "superman" delete o.name; alert(o.name); //输出 "undefined" 删除了name属性,将其设置为undefined(即创建的未初始化的变量的值).delete不能删除开发者未定义(即ECMAScri

  • JavaScript中常用的验证reg

    不错的JS验证~~~~~~~~~~~~~~~~~~~~~~~~~ 用途:校验ip地址的格式 输入:strIP:ip地址 返回:如果通过验证返回true,否则返回false: */ function isIP(strIP) { if (isNull(strIP)) return false; var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正则表达式 if(re.test(strIP)) { if( RegExp.$1 <256 && R

  • 关于javascript中dataset的问题小结

    DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关.与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路. 一.关于dataset 1.html5自定义属性及基础 html5

  • 详解JavaScript中常用的函数类型

    网页中的java代码需要写在JavaScript中,里面部分少不了函数,介绍一下JavaScript中常用的函数类型. 1.可变函数 <script> function show(){ alert("第一个..."); } function show(str){ alert("第二个"); } function show(a,b){ alert("第三个..."); alert(a+":"+b); } </s

  • JavaScript中使用Spread运算符的八种方法总结

    Spread运算符 允许从 iterable 表达式(如另一个数组文本)初始化部分数组文本,或允许表达式扩展到多个参数(在函数调用中). 语法 var array = [[arg0ToN ,] ...iterable [, arg0ToN]] func([args ,] ...iterable [, args | ...iterable]) 参数 iterable 必需. 迭代对象. arg0ToN 可选. 数组文本的一个或多个元素. args 可选. 函数的一个或多个参数. 本文将带大家了解如

  • JavaScript中常用的3种弹出提示框(alert、confirm、prompt)

    三种提示框 alert () confirm() prompt () alert () alert()方法是显示一条弹出提示消息和确认按钮的警告框. 需要注意的是 :alert()是一个阻塞的函数,如果我们不点确认按钮,后面的内容就不会加载出来. 使用方式: alert("想要提示的文本内容") 样例代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <

  • 分享12个Webpack中常用的Loader(小结)

    目录 前言 style-loader css-loader sass-loader postcss-loader babel-loader ts-loader html-loader file-loader url-loader html-withimg-loader vue-loader eslint-loader 总结 前言 初衷: 整理一些常用的loader分享给大家,方便知道在什么场景下该用什么loader.如果有大佬都懂悄悄左滑就行,不喜勿喷. 适合人群: 前端初级开发. style-

  • JavaScript中常用的数组操作方法

    目录 一.concat() 二.join() 三.push() 五.shift() 六.unshift() 七.slice() 八.splice() 九.substring() 和 substr() 十.sort 排序 十一.reverse() 十二.indexOf 与 lastIndexOf 十三.every 对数组 十四.some 十五.filter 十六.map 十七.forEach 数组遍历 1.find(): 2.findIndex(): 3.fill(): 4.copyWithin(

  • JavaScript中常用的几种字符串方法汇总(新手必看)

    JavaScript常用的几种字符串方法 字符串是一种只读数据,只能查 常用的几种字符串方法: 1.charAt:根据指定的下标获取到对应的字符; 2.charCodeAt:根据指定的下标获取到字符对应的阿斯克码:(底部有ASCII对照表) ps:通过阿斯克码获取到字符: 3.substring:截取字符串: 4.substr:截取字符串: 5.slice:截取字符串: 6.indexOf:查找字符/子字符串在大字符串中第一次出现的位置,找到了返回下标,找不到返回-1: 7.lastIndexO

  • JavaScript中常用的数组操作方法总结

    目录 前言 数组基础遍历方法 for for of for in 数组的基础操作方法 push:尾部追加元素 pop:尾部移出元素 unshift:头部追加元素 shift:头部移出元素 splice:删除添加替换 concat:连接 join:分割 slice:切割 includes:查询 indexOf:查询 fill:填充/替换 es6中带来的数组高阶方法 forEach:迭代(枚举) filter:过滤 map:映射 find:查找 findIndex:查找下标 前言 函数和方法的区别:

随机推荐