JavaScript中的各种操作符使用总结

一元操作符
只能操作一个值的操作符叫一元操作符。
一元操作符是ECMAScript中最简单的操作符。

1.递增和递减操作符
递增递减操作符直接借鉴C,而且各有两个版本:前置型和后置型。顾明思义,前置型应该让位于要操作的变量之前,而后置型应该位于要操作的变量之后。
前置型:

var num1 = 1;
var num2 = 2;
var num3 = ++num1 + num2;//4

后置型:

var num1 = 1;
var num2 = 2;
var num3 = num1++ + num2;//3

上述两段代码得出了不同的结果,原因就在与,后置递增递减与前置递增递减有一个非常重要的区别,即后置递增递减操作是在包含它们的语句被求值之后才执行的。

适用范围:
前置递增递减与后置递增递减所有这四个操作符对任何值都适用。应用于不同值时,该操作符会像Number()转型函数一样对值进行转换,转化后进行加减1的操作。

2.一元加和减操作符
一元加和减操作符主要用于基本的算术运算,也可以用于转换数据类型(该操作符会像Number()转型函数一样对这个值进行转换)。

布尔操作符
布尔操作符一共有三个:非(NOT)、与(AND)、或(OR)。

1.逻辑非
逻辑非操作符由一个叹号表示(!),可以应用于ECMAScript中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。

同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为

2.逻辑与
逻辑与操作符由两个和号(&&)表示,有两个操作数且可运用于任何类型的操作数。逻辑与属于短路操作,即如果第一个操作数求值结果是false,那么就不会对第二个操作数求值。
当两个值都为真值时,结果为true。当两个值为一真一假时,结果为false。当两个值都为假值时,返回false。
其中一个值不是布尔值时:遵循下列规则

第一个操作数为假,返回第一个;

第一个操作数为真的时候,返回第二个。
如果第一个操作数是对象,则返回第二个操作数

var a = {b:1};
a && 'ss'//"ss"

如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象

'ss' && a//Object {b: 1}

如果两个操作数都是对象,则返回第二操作数

var c = {d:2};
c && a//Object {b: 1}

(1)如果有一个操作数是null,则返回null
(2)如果有一个操作数是NaN,则返回NaN
(3)如果有一个操作数是undefined,则返回undefinded

3.逻辑或
与逻辑与操作符相似,逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。

(1)第一个操作数为真,返回第一个
(2)第一个操作数为假,返回第二个
乘性操作符
ECMAScript定义了3个乘性操作符:乘法、除法和模

Infinity*0//NaN
0/0//NaN
Infinity/Infinity//NaN

加性操作符
1.加法(转字符串)
两个操作符都是数值
执行常规的加法计算。

Infinity + -Infinity//NaN

如果有一个操作数是字符串

如果两个操作符都是字符串,则将第二个操作符与第一个操作符拼接起来
如果只有一个操作符是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来。
如果这个操作数是对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值,然后再应用前面关于字符串的规则。对于null和undefined,则分别调用String()函数并取得字符串"undefined"和"null"。

2 + '' //"2"

2.减法(转数值)
如果两个操作数都是数值
执行常规的算术减发操作并返回结果,如果有一个操作数是NaN,则结果是NaN

Infinity - Infinity//NaN

如果有一个操作数不是数值

如果有一个操作数是字符串、布尔值、null或undefined,则先在后台调用Number()函数将其转换为数值,然后再根据前面的规则执行减法计算。如果转化的结果是NaN,则减法的结果就是NaN。
如果有一个操作数是对象,则调用对象的valueOf()方法以取得表示该对象的数值。如果得到的值是NaN,则减法的结果是NaN。如果对象没有valueOf()方法则调用其toString()方法并将得到的字符串转换为数值。

5 - true//4

关系操作符
如果两个操作数都是数值,则执行数值比较
如果两个操作数都是字符串,则比较两个字符串对应的字符编码值
如果一个操作数是数值,则将另一个操作数转换为数值,然后执行数值比较

var result = '23' < '3'//true
var result = '23' < 3//false

相等操作符
1.相等和不相等
先转换再比较

(1)如果有一个操作数是布尔值,则在比较相等性之前,先将其转换为数值
(2)如果有一个操作数是字符串,另一个操作数是数值,先将其转换为数值
(3)如果有一个操作数是对象,另一个不是,则调用对象的valueOf()方法,用得到的基本类型值按前面的基本规则进行比较
null和undefined是相等的
要比较相等性之前不能将null和undefined转换为任何其他值
如果两个操作数都是NaN,相等操作符也返回false,按规则,NaN不等于NaN

2.全等和不全等
仅比较而不转换

"55" !== 55 //true

条件操作符

variable = boolean_expression ? true_value : false_value

本质上,这段代码的含义就是基于对boolean_expression求值的结果,决定给变量variable赋什么值。如果求值结果为true,则给变量赋true_value;如果求值结果为false,则给变量variable赋false_value值。

赋值操作符
简单的赋值操作符由等号表示,其作用就是把右侧的值赋给左侧的变量。

逗号操作符
逗号操作符多用于声明多个变量;但除此之外,逗号操作符还用来赋值。在用于赋值时,逗号操作符总会返回表达式中的最后一项。

(0)

相关推荐

  • javascript中typeof操作符和constucor属性检测

    *#type.js 复制代码 代码如下: function Person(name, age) {  this.name = name;  this.age = age; } var d = {an: 'object'}; var a = ['apple', 'banana']; var f = function() {}; var s = 'David'; var n = 33; var b = true; var o = new Object(); var person = new Pers

  • JavaScript中诡异的delete操作符

    delete这个操作符呢,在javascript中不是很常用,但是他的特性的确很诡异. 1,删除对象的属性,代码: 复制代码 代码如下: var o = {     a: 1,     b: 2   }; delete o.a; alert(o.a);  //undefined 那么到底delete删除的是对象的属性还是对象的属性值呢,我开始觉得删除的应该是值,因为结果是undefined,而没有报错.但是事实上,我的看法是错误的,举例说明: 复制代码 代码如下: var o = {}; var

  • 全面解析JavaScript中“&&”和“||”操作符(总结篇)

    1.||(逻辑或), 从字面上来说,只有前后都是false的时候才返回false,否则返回true. alert(true||false); // true alert(false||true); // true alert(true||true); // true alert(false||false); // false 这个傻子都知道~~ 但是,从深层意义上来说的话,却有另一番天地,试下面代码 alert(0||1);//1 显然,我们知道,前面0意味着false,而后面1意味着true,

  • js中的内部属性与delete操作符介绍

    在讲解Configurable之前,我们首先来看一道面试题: a = 1; console.log( window.a ); // 1 console.log( delete window.a ); // true console.log( window.a ); // undefined var b = 2; console.log( window.b ); // 2 console.log( delete window.b ); // false console.log( window.b

  • JS之相等操作符详解

    1.相等 == 和不相等 != 先转换操作数再比较相等性 在转换不同的数据类型时,相等和不相等遵循以下规则: 1.1 如果有一个操作数是布尔值,则在比较相等性前先将其转换为数值---false转换为0,true转换为1; 1.2 如果一个操作数是字符串,另一个操作数是数值,则在比较相等性前将字符串转换为数值 1.3 如果一个操作数是对象昂,另一个不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则比较 1.4 null和undefined是相等的 1.5 在比较相等性之前,

  • 浅谈javascript中new操作符的原理

    javascript中的new是一个语法糖,对于学过c++,java 和c#等面向对象语言的人来说,以为js里面是有类和对象的区别的,实现上js并没有类,一切皆对象,比java还来的彻底 new的过程实际上是创建一个新对象,把新象的原型设置为构造器函数的原型,在使用new的过程中,一共有3个对象参与了协作,构造器函数是第一个对象,原型对象是二个,新生成了一个空对象是第三个对象,最终返回的是一个空对象,但这个空对象不是真空的,而是已经含有原型的引用(__proto__) 步骤如下: (1) 创建一

  • javascript操作符"!~"详解

    快过年放假了,也终于闲下来了.每天游览于各种技术文章中,这种状态好极了. 下午看篇关于js的文章,其中有如下这么一段引起了我的注意. 复制代码 代码如下: (function () {     var names = [];     return function (name) {         addName(name);     }     function addName(name) {         if (!~names.indexOf(name))//如果存在则不添加      

  • Javascript基础教程之比较操作符

    和其他语言一样,JavaScript也有条件语句对流程上进行判断.包括各种操作符合逻辑语句 比较操作符 常用的比较操作符有      等于 == ,  不等于!= , 大于 >, 小于 <,大于等于 >= ,小于等于 <= 复制代码 代码如下: document.write("Study" == "study");//false     document.write("Study" < "study&quo

  • JavaScript中的操作符类型转换示例总结

    首先,我们先来做一些题目吧!为了统一,我不混着来写这些题目,面试题目中,经常将这些题目混起来,这样对你的迷惑度会更大,为了更方便演示,我在这里分模块写了一些题目,大家可以看下! 操作符字符串的隐性转换  乘法 console.dir("-------以下乘法---------"); console.dir(5*"5"); console.dir(5*"a"); console.dir(5*NaN); console.dir(5*null); co

  • 总结JavaScript中布尔操作符||与&&的使用技巧

    你是否看到过这样的代码:a=a||""; 可能javascript初学者会对此感到茫然.今天就跟大家分享一下我的一些心得. 其实: a=a||"defaultValue"; a=a||"defaultValue"; 与: if(!a){ a="defaultValue"; } if(!a){ a="defaultValue"; } 和: if(a==null||a==""||a==und

随机推荐