javascript相等运算符与等同运算符详细介绍
==运算符和===运算符用来检测两个值是否相等,它们采用了具有同一特质的两个不同定义。这两个运算符都接受任意类型的运算数,如果两个运算数相等,它们都返回true,否则都返回false,===运算符是等同运算符,它采用严格的同一特质定义检测两个运算数是否完全相同,亲们注意是完全相同哦。==运算符是相等运算符,它采用比较宽松的同一特质定义比较两个运算数是否相等。
这样概念有个基本认识。
下面说下具体判定两个值是相等情况吧。
===运算符两个值比较
1,如果两个值类型不同,它们就不相同
2,如果两个值的类型是数字,而且值相同,那么除非中间有一个或者两个都是(NaN)这种情况它们不是等同,否则它们是等同
3,如果两个值是字符串,而且串中同一个位置上的字符完全相同,那么它们就完全等同,如果字符串的长度或者内容不同,那么它们就不是等同的咯
==运算符两个值比较
1,如果两个值的类型相同,那么就检测它们的等同性。如果两个值完全相同,它们就相等。如果它们不完全相同,它们就不相等了
2,如果两个值的类型不同,它们仍然有可能相等(举几个例子)
1)如果一个值是null,另外一个值是undefined,它们相等
2)如果一个值是数字,另外一个值是字符串,把字符串转换成数字,再用转换后的值比较
3)如果一个值是true,将它转化成1,再进行比较。如果一个值为false,把它转化为0,再进行比较
4)如果一个值是对象,另外一个值是数字或字符串,将对象转换成原始类型的值,再比较。
相关推荐
-
JavaScript 更严格的相等 [译]
1.检测NaN 在数学上,任意值x总是与自己相等: x = x 但这条规则并不适用于 === 和 NaN: 复制代码 代码如下: > NaN === NaN false 导致的结果就是,你不能通过使用indexOf方法在一个包含了NaN的数组中找到这个NaN,因为该方法在内部是使用了===来判断一个元素是否和参数中指定的值相等的: 复制代码 代码如下: > [ NaN ].indexOf(NaN) -1 译者注:switch语句同理 复制代码 代码如下: switch (NaN) { case
-
Javascript中的相等与不等运算
转换的规则如下: 如果其中一个操作数的类型为 Boolean ,那么,首先将它转换为数字类型,false 转换为 0, true 将转换为 1. 如果其中一个操作数的类型是字符串,另外一个为数字类型,那么,将字符串转换为数字进行比较. 如果其中一个操作数的类型是字符串,另外一个为 object 类型,那么,将调用对象的 toString 方法之后,比较字符串. 如果其中一个操作数的类型是数字类型,另外一个为 object 类型,那么,将对象转换为数值后进行数字比较. 以下的规定了一些特殊的比较:
-
Javascript判断对象是否相等实现代码
在做表单页面的时候,想判断2个js对象,是不是所有完全相同.这里是stackoverflow上的解决办法,在这里记录一下. 复制代码 代码如下: Object.prototype.equals = function(x) { var p; for(p in this) { if(typeof(x[p])=='undefined') {return false;} } for(p in this) { if (this[p]) { switch(typeof(this[p])) { case 'o
-
javascript中比较字符串是否相等的方法
网上看了很多,比如==.equals都不行 还是外国网站给力,发现了方法. http://stackoverflow.com/questions/2167602/optimum-way-to-compare-strings-in-javascript用string_a.localeCompare(string_b) 方法去做:它会返回3个值0:字符串相等-1:字符串string_a<string_b.1:字符串string_a>string_b大家以后就可以使用正确的方法比较字符串了.
-
Javascript学习笔记之相等符号与严格相等符号
Javascript 有两种方法来判断两种值是否相等. 相等符号 相等符号由两个等号组成: == Javascript 是弱类型语言.这就意味着相等符号为了比较两个值将会强制转换类型. 复制代码 代码如下: "" == "0" // false 0 == "" // true 0 == "0"
-
javascript相等运算符与等同运算符详细介绍
==运算符和===运算符用来检测两个值是否相等,它们采用了具有同一特质的两个不同定义.这两个运算符都接受任意类型的运算数,如果两个运算数相等,它们都返回true,否则都返回false,===运算符是等同运算符,它采用严格的同一特质定义检测两个运算数是否完全相同,亲们注意是完全相同哦.==运算符是相等运算符,它采用比较宽松的同一特质定义比较两个运算数是否相等. 这样概念有个基本认识. 下面说下具体判定两个值是相等情况吧. ===运算符两个值比较 1,如果两个值类型不同,它们就不相同 2,如果两个值
-
Javascript的严格模式strict mode详细介绍
"严格模式"(strict mode)是ECMA-262 Edition 5定义的新语法,表示要用严格的Javascript语法来执行,有一些过去惯用的写法就会抛出SyntaxError异常,例如:1.变量前没有用var宣告2.使用八进制语法:var n = 023和var s = "\047"3.使用with语句4.使用delete删除一个变量名(而不是属性名):delete myVariable5.使用eval或arguments作为变量名或函数名6.使用未来保
-
Java中的位运算符、移位运算详细介绍
一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&) :两位全为1,结果为1,否则为0: (2)按位或 (|) :两位有一个为1,结果为1,否则为0: (3)按位取反(~):0 变 1, 1变0: (4)按位异或(^):两位,如果相同,结果为0:如果不同,结果为1: 注意: (1)位运算中的 符号位(最高位)也跟着变; (2)位运算符与逻辑运算符(逻辑与&&.逻辑或||.逻辑非! )有点相似.但是,逻辑运算符只能操作boolean变量 (也就是左右两边的值
-
JavaScript中的分号插入机制详细介绍
仅在}之前.一个或多个换行之后和程序输入的结尾被插入 也就是说你只能在一行.一个代码块和一段程序结束的地方省略分号. 也就是说你可以写如下代码 复制代码 代码如下: function square(x) { var n = +x return n * n } 但是却不可以写的像下面代码一样,这样就报错了哦 复制代码 代码如下: function area(r) { r = +r return Math.PI*r*r }//error 仅在随后的输入标记不能解析时插入
-
Javascript优化技巧之短路表达式详细介绍
什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值.这是这两个操作符的一个重要属性. 一个最简单的例子: 复制代码 代码如下: foo = foo||bar; 这行代码是什么意思?答案: 复制代码 代码如下: //如果foo存在,值不变,否则把bar的值赋给foo if(!foo) foo = bar; 在javascrip
-
JavaScript中的console.profile()函数详细介绍
编写JavaScript程序时,如果需要知道某段代码的执行时间,可以使用console.time().不过,在分析逻辑较为复杂的JavaScript程序,试图从中找出性能瓶颈的时候,console.time()就不适用了 - 深入分析逻辑较为复杂的JavaScript程序的运行就意味着插入大量的console.time()语句,而这无疑是不可接受的.对于复杂逻辑的JavaScript程序调优,正确的方法是使用console.profile(). 浏览器支持 安装了Firebug插件的Firefo
-
Javascript异步编程模型Promise模式详细介绍
Promise 编程模式也被称为 thenable,可以理解为 延迟后执行.每个 Promise 都拥有一个叫做 then 的唯一接口,当 Promise 失败或成功时,它就会进行回调.它代表了一种可能会长时间运行而且不一定必须完成的操作结果.这种模式不会阻塞和等待长时间的操作完成,而是返回一个代表了承诺的(promised)结果的对象. 当前的许多 JavaScript 库(如 jQuery 和 Dojo.AngularJS)均添加了这种称为 Promise 的抽象.通过这些库,开发人员能够在
-
JavaScript中的console.time()函数详细介绍
如果需要在Web调试过程中知道代码执行的时间,那么可以通过在JavaScript代码中添加console.time()语句和console.timeEnd()语句来对程序的执行进行计时.以下面这个耗时较长的foo()函数为例: 复制代码 代码如下: function foo(){ var x = 4.237; var y = 0; for (var i=0; i<100000000; i++) { y = y + x*x; } return
-
JavaScript中的console.log()函数详细介绍
对于JavaScript程序的调试,相比于alert(),使用console.log()是一种更好的方式,原因在于:alert()函数会阻断JavaScript程序的执行,从而造成副作用:而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑. 什么是console.log()? 除了一些很老版本的浏览器,现今大多数浏览器都自带调试功能:即使没有调试功能,也可以通过安装插件来进行补充.比如,老版本的Firefox没有自带调试工具,在这种情况下可以通过安装Firebug插件来
-
JavaScript中的console.group()函数详细介绍
在使用console.log()或者其它日志级别的控制台输出功能时,日志输出是没有层级关系的.当程序中日志输出较多时,这一局限性将带来不小的麻烦.为了解决这一问题,可以使用console.group().以下面代码为例: 复制代码 代码如下: function doTask(){ doSubTaskA(1000); doSubTaskA(100000); console.log("Task Stage 1 is completed"); doSubTas
随机推荐
- php实现购物车功能(以大苹果购物网为例)
- 广告切换效果(缓动切换)
- 如何在Windows Vista中预览PDF文件的方法
- asp的RegExp对象正则表达式功能用法[比较全]
- 详解oracle 日期格式(总结)
- 动态加载js的方法汇总
- 把json格式的字符串转换成javascript对象或数组的方法总结
- ASP.NET程序中常用代码汇总
- yii添删改查实例
- Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
- MySQL的安全问题从安装开始说起
- MYSQL WHERE语句优化
- MySQL中的if和case语句使用总结
- MySQL中VARCHAR与CHAR格式数据的区别
- Android自定义TabLayout效果
- Powershell直接脚本时出现无法加载文件因为禁止执行脚本
- SqlServer参数化查询之where in和like实现之xml和DataTable传参介绍
- JavaScript 详解预编译原理
- IIS6、IIS7.5设置网站默认首页方法(Directory Listing Denied)
- Win2003安装IIS6.0不支持ASP的解决方法图文教程