js 操作符汇总

逻辑或(||)

var result = true || false;
与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值;此时,它遵循下列规则:
□ 如果第一个操作数是对象,则返回第一个操作数。

□ 如果第一个操作数求值为false,则返回第二个操作数。

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

□ 如果两个操作数都是null,返回null

□ 如果两都为undefined,返undefined。

□ 如果两都为NaN,返NaN

“===”与“==”的区别

相等操作符(==)

相等操作符会对操作值进行隐式转换后进行比较:

如果一个操作值为布尔值,则在比较之前先将其转换为数值
如果一个操作值为字符串,另一个操作值为数值,则通过Number()函数将字符串转换为数值
如果一个操作值是对象,另一个不是,则调用对象的valueOf()方法,得到的结果按照前面的规则进行比较
null与undefined是相等的
如果一个操作值为NaN,则相等比较返回false
如果两个操作值都是对象,则比较它们是不是指向同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true,否则,返回false
下面分别说明:
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等]
2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。

再说 ==,根据以下规则:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
e、任何其他组合,都[不相等]。

表达式 值 表达式 值
null==undefined true true==1 true
"NaN" ==NaN false $null==0 false
false==0 true NaN!=NaN true
简而言之就是“==”只要求值相等。“===”要求值和类型都相等。

资料来源于javascript高级程序设计,整理下,后续更新

(0)

相关推荐

  • JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符

    在ECMAScript中,有非常丰富的运算符和操作符,在这篇文章中将按通常的分类来稍微整理一下,不过在整理之前,先说明一下: 1.虽然标题是运算符和操作符,然而在我看来并没有多少严格区分的必要,在英文中,貌似也是用一个Operator来表示,所以在下文中我可能会混用.甚至,一些不属于运算符和操作符范畴的,我也整理在这里,只要我觉得必要. 2.对于运算符的优先级,你无需一一牢记--我相信你知道最简单的"先乘除,后加减",至于其它的,如果你不确定,加上括号好了.在ECMAScript中,优

  • JS中==与===操作符的比较

    ===操作符: 要是两个值类型不同,返回false 要是两个值都是number类型,并且数值相同,返回true 要是两个值都是stirng,并且两个值的String内容相同,返回true 要是两个值都是true或者都是false,返回true 要是两个值都是指向相同的Object,Arraya或者function,返回true 要是两个值都是null或者都是undefined,返回true ==操作符: 如果两个值具有相同类型,会进行===比较,返回===的比较值 如果两个值不具有相同类型,也有

  • JS 操作符整理[推荐收藏]

    Arithmetic Operators算术运算符 Operator Description Example Result + Addition 加 x=2y=2x+y 4 - Subtraction 减 x=5y=2x-y 3 * Multiplication 乘 x=5y=4x*y 20 / Division 除 15/55/2 32.5 % Modulus (division remainder) 余数 5%210%810%2 120 ++ Increment递增 x=5x++ x=6 -

  • js 操作符实例代码

    复制代码 代码如下: var $mfunc=function(){ return { //此函数判断浏览器类型,为了简便,返回一个数字表示, //1.ie6;2.ie7; 3.ie8;4.ie5.5;5,Firefox;6.chrome;7.Opera;8.Safari;0.无法检测的浏览器 //其他浏览器可以自行添加 whichOS:function(){ var useragent=navigator.userAgent.toLowerCase(); return (/MSIE 6/i.te

  • js 操作符汇总

    逻辑或(||) var result = true || false; 与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值:此时,它遵循下列规则: □ 如果第一个操作数是对象,则返回第一个操作数. □ 如果第一个操作数求值为false,则返回第二个操作数. □ 如果两个操作数都是对象,则返回第一个操作数. □ 如果两个操作数都是null,返回null □ 如果两都为undefined,返undefined. □ 如果两都为NaN,返NaN "==="与"=

  • 工作中常用js的汇总

    一.javascript 中防止重复点击.防止点击过快 防止重复点击可以添加一个开关,让这个开关默认为 true,第一次点击将其变为 false,点击事件的执行需要判断这个开关是否为 true,为 true 执行,false 不执行.例子如下: var isclick= true; function click(){ if(isclick){ isclick = false; //下面添加需要执行的事件 ... } 如果只是防止点击过快,还可以设置定时器,在一定时间后,自动将开关变为 true,

  • 一个关于JS操作符in问题引发的探究

    事情是这样的:大家都知道"内存泄露"这回事吧.它有几个常见的场景: 闭包使用不当引起内存泄漏 (未声明的)全局变量 分离的DOM节点 (随意的)控制台的打印 遗忘的定时器 循环引用 内存泄漏需要重视,它是如此严重甚至会导致页面卡顿,影响用户体验! 其中第 3 点引起了我的注意 -- 我当然清楚地知道它说的是比如:"假设你手动移除了某个dom节点,本应释放该dom节点所占用的内存,但却因为疏忽导致某处代码仍对该被移除节点有引用,最终导致该节点所占内存无法被释放"的情况

  • 工作中常用js功能汇总

    一.javascript 中防止重复点击.防止点击过快 防止重复点击可以添加一个开关,让这个开关默认为 true,第一次点击将其变为 false,点击事件的执行需要判断这个开关是否为 true,为 true 执行,false 不执行.例子如下: var isclick= true; function click(){ if(isclick){ isclick = false; //下面添加需要执行的事件 ... } 如果只是防止点击过快,还可以设置定时器,在一定时间后,自动将开关变为 true,

  • Smarty中常用变量操作符汇总

    本文汇总了Smarty中常用变量操作符,分享给大家供大家参考.具体如下: php模板引擎smarty的变量操作符可用于操作变量,自定义函数和字符. 语法中使用"|"应用变量操作符,多个参数用":"??指簟?/DIV> capitalize[首字母大写] count_characters[计算字符数] cat[连接字符串] count_paragraphs[计算段落数] count_sentences[计算句数] count_words[计算词数] date_f

  • perl 文件测试操作符汇总

    第一篇: 复制代码 代码如下: 操作符       含义-r      文件或目录可读-w      文件或目录可写-x      文件或目录执行-o      文件或目录归用户所有-R      文件或目录对真正用户可读-W      文件或目录对真正用户可写-X      文件或目录对真正用户执行-O      文件或目录归真正用户所有-e      文件或目录存在-z      文件存在且大小为0-s      文件或目录存在且不为0(返回字节数)-l      文件为符号链接-f    

  • 微信中一些常用的js方法汇总

    1.网页图片集左右滑动查看图片,如下样例: js效果 复制代码 代码如下: var pictures = [];  angular.forEach(pitctures,function(k,i){          pictures[i] = k.imgPath;  });  $scope.previewPics = function(currentUrl){         if (typeof window.WeixinJSBridge != 'undefined') {          

  • 微信JS接口汇总及使用详解

    基本说明 使用说明 1.引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js 备注:支持使用 AMD/CMD 标准模块加载方法加载 2.注入配置config接口 所有需要使用JSSDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用). 复制代码 代码如下: wx.config({  debug:

  • 前端设计师们最常用的JS代码汇总

    逛社区时看到的文章,我修改调整了内容,如果大家觉得也有帮助 可以收藏下~ HTML5 DOM 选择器 // querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.item'); console.log(item); // querySelectorAll() 返回匹配到的所有元素,是一个nodeList集合 var items = document.querySelectorAll('.item'); console.lo

随机推荐