js—双等号引起的类型转换过程

一、首先看双等号前后有没有NaN,如果存在NaN一律返回false

二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)

三、接着看双等号前后有没有字符串,有三种情况:

  1. 对方是对象,对象使用toString()或者valueOf()进行转换;
  2. 对方是数字,字符串转换为数字;
  3. 对方是字符串,直接比较;
  4. 其它返回false;

四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较,其它一律返回false

五、null,undefined不会进行转换,但它们俩相等

练习题:

1 console.log([0] == true);         //false
2 console.log(0 == false);           //true
3 console.log(undefined == null);     //true
4 console.log(‘0‘ == undefinded);      //false
时间: 2024-10-20 08:11:55

js—双等号引起的类型转换过程的相关文章

转战JS(1) 初探与变量类型、运算符、常用函数与转换

转战JS(1)初探与变量类型.运算符.常用函数与转换 做为一名.NET后台开发人员,正考滤向Web前端开发转型,之前也写过一代前端代码,可是当再回头看JS,并有转向它的意愿的时候,突然发现:原来JS不是那么简单的.很多的细节部分以前都没有注意到,现在把学习的知识点记录下来,做为学习笔记,好时不时看看.如果有什么错误,还请各位看官多多包涵.多多指正. JavaScript是一门轻量型的面向Web编程的脚本言语言,常被简称为:JS.广泛应用于PC和各种移动设备中,常和HTML.CSS一起组成网页页面

javascript双等号引起的类型转换

隐性类型转换步骤 一.首先看双等号前后有没有NaN,如果存在NaN,一律返回false. 二.再看双等号前后有没有布尔,有布尔就将布尔转换为数字.(false是0,true是1) 三.接着看双等号前后有没有字符串, 有三种情况: 1.对方是对象,对象使用toString进行转换: 2.对方是数字,字符串转数字:(前面已经举例) 3.对方是字符串,直接比较: 4.其他返回false 四.如果是数字,对方是对象,对象取valueOf进行比较, 其他一律返回false 五.null, undefine

js中String转Date类型并比较大小

1.比较常用的方法,但繁琐: 主要使用Date的构造方法:Date(int year , int month , int day) Java代码   <script> var str1 = "2009-8-9"; var arr1 = str1.split("-"); var date1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]); var str2 = "2009-8-4"; va

JS获取IE浏览器信息类型、版本、语言等

分享下JS获取IE浏览器信息包括类型.版本.语言等的实例. 代码: <html> <head> <title>JS完整获取IE浏览器信息--www.jbxue.com</title> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table

js 正则之 判断密码类型

原文:js 正则之 判断密码类型 今天没啥写的,就分享个思路吧.之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的.如果用 if 或者 switch 写看着确实蛋疼,如果有 7, 8 条判断,那就老长一大段了.这个思路是我之前看 jQuery 源码的时候学到的,感觉用在这也不错.先来看代码吧. function test(str, re, msg) { var ret = str.match(re || /^(\d+)$|^([a-zA-Z]+)$|^([a-zA-Z].+)$|

在基于debian的deepin或者Ubuntu上双等号“==”和双中括号“[[]]”不能使用的真相

使用的deepin-linux,今天写shell脚本的时候,忽然发现 sh test.sh 会报错[[: not found ,双等号和双中括号都不能使用了,很郁闷,后来探索发现,sh其实是dash的别名,需要使用 bash test.sh 才可以.用man sh,就可以发现其实是dash了. 原文地址:https://www.cnblogs.com/yuxiuyan/p/8734790.html

JS正则表达式验证各种数字类型

以下内容 Js代码 <script type="text/javascript"> function validate(){ var reg = new RegExp("^[0-9]*$"); var obj = document.getElementById("name"); if(!reg.test(obj.value)){ alert("请输入数字!"); } if(!/^[0-9]*$/.test(obj.

JS学习第五天----类型,值,和变量

类型,值,和变量 前言:计算机程序的运行需要对值(value)比如数字3.14或文本"hello,world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type),编程语言最基本的特性就是支持多种数据类型.当程序需要将值保持起来以备将来使用时,便将其赋值给(将值"保存"到)一个变量(variable).变量是一个值的符号名称,可以通过名称获得对值的引用.变量的工作机制是变成语句的另一个基本特征. 前言:JavaScript的数据类型分为两类:原始

js中推断对象详细类型

大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2");//string alert(typeof [1,2,3]);//object alert(typeof {"name":"zhuhui"})//object </script> 从上面中我们能够看出数组和普通对象用typeof推断出来都是objec