javascript双等号引起的类型转换
隐性类型转换步骤
一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。
二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)
三、接着看双等号前后有没有字符串, 有三种情况:
1、对方是对象,对象使用toString进行转换;
2、对方是数字,字符串转数字;(前面已经举例)
3、对方是字符串,直接比较;
4、其他返回false
四、如果是数字,对方是对象,对象取valueOf进行比较, 其他一律返回false
五、null, undefined不会进行类型转换, 但它们俩相等
举例巩固提高
下面我们一起来做做下面的题目吧!
var a;
console.dir(0 == false);//true console.dir(1 == true);//true console.dir(2 == {valueOf: function(){return 2}});//true console.dir(a == NaN);//false
console.dir(NaN == NaN);//false console.dir(8 == undefined);//false console.dir(1 == undefined);//false console.dir(2 == {toString: function(){return 2}});//true console.dir(undefined == null);//true console.dir(null == 1);//false console.dir({ toString:function(){ return 1 } , valueOf:function(){ return [] }} == 1);//true console.dir(1=="1");//true
console.dir(1==="1");//false
本文转载自:http://www.haorooms.com/post/js_yinxingleixing
javascript双等号引起的类型转换的更多相关文章
- Javascript中双等号(==)隐性转换机制
在Javascript中判断相等关系有双等号(==)和三等号(===)两种.其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等). 因此有几个常识知识: 1.对于strin ...
- Javascript中双等号(==)隐性转换机制 JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密
Javascript中双等号(==)隐性转换机制 在Javascript中判断相等关系有双等号(==)和三等号(===)两种.其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否 ...
- Java学习笔记——双等号和equals的区别
一.==和equals的区别 1. ==可以用来比较基本类型和引用类型,判断内容和内存地址 2. equals只能用来比较引用类型,它只判断内容.该函数存在于老祖宗类 java.lang.Object ...
- javascript基础(二)类型转换
原文http://pij.robinqu.me/ 类型转换 当期望使用一个布尔值的时候,可以提供任意类型值,JavaScript将根据需要自行转换类型.类型转换可以分为隐式转换和显式转换. 显式转换 ...
- js—双等号引起的类型转换过程
一.首先看双等号前后有没有NaN,如果存在NaN一律返回false 二.再看双等号前后有没有布尔,有布尔就将布尔转换为数字.(false是0,true是1) 三.接着看双等号前后有没有字符串,有三种情 ...
- Java双等号,Equals(),HashCode()小结
默认情况 - 双等号==,比较的是内存地址. - equals(),默认比较的是内存地址. - hashCode(),默认返回的是object的内存地址. String中方法改写的情况 经常会遇到需要 ...
- 在基于debian的deepin或者Ubuntu上双等号“==”和双中括号“[[]]”不能使用的真相
使用的deepin-linux,今天写shell脚本的时候,忽然发现 sh test.sh 会报错[[: not found ,双等号和双中括号都不能使用了,很郁闷,后来探索发现,sh其实是dash的 ...
- JavaScript(三)数据类型转换
类型转换JavaScript中的取值类型非常灵活,如当JavaScript期望使用一个布尔值的时候,你可以提供其它数据类型的,JavaScript将根据需要自行转换数据类型.如下示例: 10 + “o ...
- Eslint 允许使用双等号
资料 网址 ESlint: Expected !== and instead saw != https://stackoverflow.com/questions/48375316/eslint-ex ...
随机推荐
- UVa 11210 Chinese Mahjong (暴力,递归寻找)
题意:这个题意.有点麻烦,就是说给定13张牌,让你求能“听”的牌.(具体的见原题) 原题链接: https://uva.onlinejudge.org/index.php?option=com_onl ...
- IP之NCO仿真
NCO仿真要用.vo仿真模型,不能用.v文件 /**************************************************************************** ...
- Spring MVC controller 被执行两次
interceptor 被执行两次 后来发现 时controller被执行两次 后来发现是jsp页面有个: <img src="#" > 导致被执行两次. 解决方案:去 ...
- Java多线程-并发协作(生产者消费者模型)
对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的.就像学习每一门编程语言一样,Hello World!都是最经典的例子. 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓 ...
- 为UITextView添加通知..来检测UITextView内容的改变
self.mTextView =[[UITextView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH - 100, 28)]; se ...
- android免root hook框架legend
一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...
- 解决 multiple definition of
总结了解决multiple definition of的方法: 问题原因: 当多个文件包含同一个头文件时,并且你的.H里面没有加上条件编译#ifndef TEST_H#define TEST_H ...
- vc6.0 PK vs2010
从VC++6.0不足看VisualC++2010新特性 说起VC,有人想到维生素C(维C),有人想到风险投资(venture capital), 程序员们尤其是做底层开发的程序员或老程序员们第一感觉肯 ...
- 【TypeScript】TypeScript 学习 4——模块
前端数据验证在改善用户体验上有很大作用,在学了之前的知识的时候,我们很可能会写出以下代码: interface StringValidator { isAcceptable(s: string): b ...
- 在ContextLoaderListener中使用注解注入的类和job中使用注解注入的类
场景:在ContextLoaderListener子类中加载job,为JobFactory的实现类声明@Component后,在ContextLoaderListener子类中为scheduler设置 ...