JavaScript运算符详解

核心提示:javascript具有下列种类的运算符:算术运算符;等同运算符与全同运算符;比较运算符;

  1、javascript具有下列种类的运算符:算术运算符;等同运算符与全同运算符;比较运算符;

  2、目的分类:字符串运算符;逻辑运算符;逐位运算符;赋值运算符;

  3、特殊运算符:条件运算符;typeof运算符;创建对象运算符new;delete运算符;void运算符号;逗号运算符;

  算术运算符:+ 、 - 、* 、 / 、 % 、 -(一元取反) 、 ++ 、 --

  等同运算符与全同运算符:== 、 ===、 !== 、 !===

  比较运算符:< 、 > 、 <= 、 >=

  字符串运算符::< 、 > 、 <= 、 >= 、 = 、 +

  逻辑运算符:&& 、 、 !、

  赋值运算符:=、 +=、 *=、 -=、 /=

  规则:

  一、一定要注意传递给运算符的数据类型和返回的数据类型!不同的运算符都期望它的运算数表达式计算出的结果符合某种数据类型。

  例如:对字符串是不能进行乘法运算的,"a" * "b" 是不合法的,但是,在可能的情况下,javascript会把表达式转换成正确的类型,因此,表达式 "3" * "5" 是合法的,javascript将字符串转换成数字执行运算,结果返回的是数字15,而不是字符串"15"。

  二、+ 根据运算数的不同,具有不同的表现:

  字符串 + 字符串 = 字符串(被连接);"a" + "b" = "ab" "5" + "6" = "11"

  字符串 + 数字 = (字符串转换成数字)字符串(被连接);"a" + 5 = "a5" 5被转换成字符串 "1" + 0 = "10"

  数字 + 数字 = 数字(相加)5 + 5 = 10。

  三、注意运算符的结合性,有些运算符从左到右的结合性;有些从右到左结合性。

  例如:w = a + b + c 等同于 w = (a + b) + c;

  w = ---b 等同于 w = - ( - ( -b ) ); w = a = b = c 等同于 w= ( a = ( b = c ))

  一元运算符、赋值运算符、三元运算符的结合性是从右到左的;

  四、算术运算符规则:

  “+”:可以进行“加法”与“连接”运算;如果2个运算符中的一个是字符串,javascript就将另一个转换成字符串,然后将2个运算数连接起来。

  “+”:如果一个运算数是对象,javascript就会将对象转换成数字做加法运算或者字符串做连接运算;

  “-”“*”“/” 如果2个运算数中的一个是是非数字,则将它转化成数字执行数学运算。

  “/” 在javascript中,由于所有的数都是浮点数,除法的结果都是浮点数,5 / 2 = 2.5 ;除数为0的结果为正负无穷;0/0为NaN;

  “%”模运算符:计算第一个运算数对第二个运算数的模,就是第一个运算数被第二个运算数除时,返回余数。如果运算数是非数字的,则转换成数字。

  “-”一元取反:将运算数取反,如果运算数不是数字,则转化成数字。

  “++”“--”增量运算符/减量运算符号:运算数必须是一个变量、树组的一个元素或对象的一个属性。如果运算数不是数字,则转换成数字。

  注意:如果“++”位于运算数之前,先对运算数进行增量,然后计算运算数增长后的值。

  如果“--”位于运算数之后,先计算运算数未增长之前的值,然后对运算数增量。

  例如:i = 1; //赋值给i值1

  j = ++i; //先将i增量为2,然后将2赋值给j,i的值是2,j的值也是2。

  i = 1; //赋值给i值1

  j = i++; //先将i赋值给j,然后对将i值增量到2,i的值是2,j的值是1。

  减量运算符“--”与“++”相同。

  五、等同运算符与全同运算符:

  (一)“==”“!==”等同运算符与非等同运算符:

  比较2个运算数,返回一个不布尔值。

  比较数值、字符串、布尔值使用的都是量值。当且仅当两个变量存放的值相等的时候,他们才相等。

  比较对象、数组、函数的时候,使用的是引用,只有2个变量引用的是同一个对象时,他们才是相等的

  。两个不同的数组是完全不同的,即使他们具有完全相同的元素。对于存放对象、数组、函数的引用的变量来

  说,只有当他们引用的是同一个对象、数组、函数的时候,他们才相等。

  注意!应遵循的原则:

  当两个运算数的类型不同时:将他们转换成相同的类型,

  1)一个数字与一个字符串,字符串转换成数字之后,进行比较。

  2)true转换为1、false转换为0,进行比较。

  3)一个对象、数组、函数 与 一个数字或字符串,对象、数组、函数转换为原始类型的值,然后进行比较。(先使用valueOf,如果不行就使用toString)

  4)其他类型的组合不星等。

  想两个运算数类型相同,或转换成相同类型后:

  1)2个字符串:同一位置上的字符相等,2个字符串就相同。

  2)2个数字:2个数字相同,就相同。如果一个是NaN,或两个都是NaN,则不相同。

  3)2个都是true,或者2个都是false,则想同。

  4)2个引用的是同一个对象、函数、数组,则他们相等,如果引用的不是同一个对象、函数、数组,则不相同,即使这2个对象、函数、数组可以转换成完全相等的原始值。

  5)2个null,或者2个都是未定义的,那么他们相等。

  “!=”非等同运算符:与等同运算符检测的结果相反。

  (二)“===”“!===”全同运算符与非全同运算符号:

  全同运算符遵循等同运算符的比较规则,但是它不对运算数进行类型转换,当两个运算数的类型不同时,返回false;只有当两个运算数的类型相同的时候,才遵循等同运算符的比较规则进行比较。

  “!==”非全同运算符与全同运算符比较的结果相反。如果两个运算数的类型或者值不同的时候,返回true。

1 2 下一页 >全文阅读
提示:试试"← →"键,翻页更方便哦!

[1] [2]  下一页

时间: 2024-08-03 15:03:13

JavaScript运算符详解的相关文章

JavaScript知识点总结(四)之逻辑OR运算符详解_javascript技巧

在JavaScript中,逻辑OR运算符用||表示 var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse; 下面的真值表描述了逻辑AND运算符的行为: 在JavaScript中,0,"",false,null,undefined,NaN均表示false, 可以用如下的代码证明: <script type="text/javascript"> var bFalse = fal

JavaScript 继承详解及示例代码_javascript技巧

有些知识当时实在看不懂的话,可以先暂且放下,留在以后再看也许就能看懂了. 几个月前,抱着<JavaScript 高级程序设计(第三版)>,啃完创建对象,就开始啃起了 继承 ,然而啃完 原型链 就实在是看不下去了,脑子越来越乱,然后就把它扔一边了,继续看后面的.现在利用这个暑假搞懂了这个继承,就把笔记整理一下啦. 原型链(Prototype Chaining) 先看一篇文章,文章作者讲的非常不错,并且还配高清套图哦.lol- 链接: [学习笔记] 小角度看JS原型链 从原文中小摘几句 构造函数通

JS高级调试技巧:捕获和分析 JavaScript Error详解_javascript技巧

反正只要 JavaScript 出错后刷新不复现,那用户就可以通过刷新解决问题,浏览器不会崩溃,当没有发生过好了.这种假设在 Single Page App 流行之前还是成立的.现在的 Single Page App 运行一段时间后状态复杂无比,用户可能进行了若干输入操作才来到这里的,说刷新就刷新啊?之前的操作岂不要完全重做?所以我们还是有必要捕获和分析这些异常信息的,然后我们就可以修改代码避免影响用户体验. 捕获异常的方式 我们自己写的 throw new Error() 想要捕获当然可以捕获

JavaScript 继承详解 第一篇_javascript技巧

面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++.C#.Java)的开发经验. 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则是类的一个具体实现. 我们还知道,面向对象编程有三个重要的概念 - 封装.继承和多态. 但是在JavaScript的世界中,所有的这一切特性似乎都不存在. 因为JavaScript本身不是面向对象的语言,而是基于对象的语言. 这里面就有一些有趣的特性,比如JavaScript中所有事物都是对象, 包

JavaScript 继承详解(三)_js面向对象

注:本章中的jClass的实现参考了Simple JavaScript Inheritance的做法. 首先让我们来回顾一下第一章中介绍的例子: function Person(name) { this.name = name; } Person.prototype = { getName: function() { return this.name; } } function Employee(name, employeeID) { this.name = name; this.employe

JavaScript 继承详解(一)_js面向对象

面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++.C#.Java)的开发经验. 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则是类的一个具体实现. 我们还知道,面向对象编程有三个重要的概念 - 封装.继承和多态. 但是在JavaScript的世界中,所有的这一切特性似乎都不存在. 因为JavaScript本身不是面向对象的语言,而是基于对象的语言. 这里面就有一些有趣的特性,比如JavaScript中所有事物都是对象, 包

JavaScript 继承详解(四)_js面向对象

Classical Inheritance in JavaScript. Crockford是JavaScript开发社区最知名的权威,是JSON.JSLint.JSMin和ADSafe之父,是<JavaScript: The Good Parts>的作者. 现在是Yahoo的资深JavaScript架构师,参与YUI的设计开发. 这里有一篇文章详细介绍了Crockford的生平和著作. 当然Crockford也是我等小辈崇拜的对象. 调用方式 首先让我们看下使用Crockford式继承的调用

在Node.js中使用Javascript Generators详解_javascript技巧

Generators是Javascript的一种协同程序( coroutine 简称:协程)风格,是指那些可以在执行时暂停然后又恢复的函数,该函数是在functi配以星号符号形式如function* ,函数内有些特征关键词如yield 和yield*. function* generatorFn () { console.log('look ma I was suspended') } var generator = generatorFn() // [1] setTimeout(functio

JavaScript构造函数详解_javascript技巧

构造函数就是初始化一个实例对象,对象的prototype属性是继承一个实例对象.   构造函数注意事项: 1.默认函数首字母大写 2.构造函数并没有显示返回任何东西.new 操作符会自动创建给定的类型并返回他们,当调用构造函数时,new会自动创建this对象,且类型就是构造函数类型. 3.也可以在构造函数中显示调用return.如果返回的值是一个对象,它会代替新创建的对象实例返回.如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回.     function Person( name)