我所理解的javascript的隐性类型转化。

javascript中的类型转换可以分为隐性类型转换,显性类型转换。显性转换就是在代码中通过方法直接改变数据类型。常见的方法有toString,toValue,toNumber,toBoolean等等。隐性类型就是程序在执行是会自动的就进行类型转换。

javascript中最常见的会进行隐性类型转换的操作符是==,当然操作符+也会进行隐性类型转换。

下面举几个例子。

console.log(undefined==‘undefined‘);

console.log(undefined==null);

console.log(true==2);

console.log({}=={});

第一个打印的是false,第二个打印的是true,第三个打印的是false,第四个打印的是false.

第一个false是因为undefined不会进行隐性类型转换。

第一个true,虽然undefined不会进行隐性类型转换,但是null和undefined 相等;

第二个false是因为true会转换为1,而不是2转换成true。这个问题相信大多数初学者会遇到。

第四个false是因为对象之间的比较是比较引用之间的比较。第一个{}对象跟第二个{}对象地址是不同的。

总结下:==操作符

1.看操作数有没有boolean类型,如果有先将boolean类型变成number类型。

2.看操作数有没有字符串类型,如果是两个都是字符串类型就直接比较;如果一个是字符串,一个是对象,对象转字符串再比较;如果一个是字符串,一个是数值,字符串转数值再比较。

3.看操作数有没有对象类型,如果两个都是对象就直接比较;如果一个是对象一个是数值,对象转数值再比较。

4.null,undefined不会进行类型转换,但是null,undefined相等。

时间: 2024-10-06 08:26:46

我所理解的javascript的隐性类型转化。的相关文章

JavaScript判断浏览器类型及版本

说明:以下内容参考了一些网上资料以及同事间的一些讨论. 浏览器对于我们来说,可能是最熟悉的工具了.记得最早那会Netscape,到后来的Internet Explorer一统江湖,再到现在的FireFox大行其道,浏览器市场的争夺,可谓是硝烟弥漫.除了我们常见的IE, Firefox, Opera, Safari四大金刚以外,新近又出了一位Chrome,虽然新出,但是出于Google这个名门,Chrome所受到的关注绝不亚于先前的四大金刚,看来以后要改为5朵金花了,呵呵.除了这些熟知的浏览器以外

JavaScript中对象类型的转换小结

对象到字符串和对象到数字类型的转换涉及到两个重要的方法,最终的转换结果会受到这两个方法返回结果的影响,这两个方法就是toString和valueOf.所有的对象都会从Object对象中继承到这两个方法.toString方法 用于返回对象的字符串表示(但是其实也可以不返回字符串).对于默认从Object继承而来的toString方法并不会返回太多有意义的内容.而valueOf方法目的是返回一个可以表示对象的原始类型值,但是由于对象的复杂性,大多数情况下根本不可能用一个原始类型值来表示,所以默认的v

javascript 判断对象类型

typeof typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果. 此表总结了typeof所有可能的返回值: 操作数类型 返回值 undefined "undefined" Null "object" Boolean "boolean" Number "number" String "string" 函数对象 "function" E4X XM

javascript中的隐式类型转化

javascript中的隐式类型转化 #隐式转换 ## "+" 字符串和数字 如果某个操作数是字符串或者能够通过以下步骤转换为字符串的话,+将进行拼接操作. 如果其中一个操作数是对象(包括数组),则首先对其调用`ToPrimitive`抽象操作,该抽象操作再调用`[[DefaultValue]]`,以数字作为上下文. `[1,2]+[3,4]=='1,23,4'` 原因,因为数组的valueOf操作无法得到简单的基本类型,于是它转而调用toString.因此上栗得到的是'1,23,4'

(转)JavaScript判断浏览器类型及版本

IE 只有IE支持创建ActiveX控件,因此她有一个其他浏览器没有的东西,就是ActiveXObject函数.只要判断window对象存在ActiveXObject函数,就可以明确判断出当前浏览器是IE.而IE各个版本典型的userAgent如下: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)        Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)        Mozilla/

从头开始学JavaScript (十一)——Object类型

原文:从头开始学JavaScript (十一)--Object类型 一.object类型 一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值). object对于在应用程序中存储和传输数据而言,是非常理想的选择 二.创建object 创建object实例有两种方法: 使用new 操作符后跟object构造函数 使用对象初始化器,也就是对象字面量表示法 2.1使用new 操作符后跟object构造函数创建object实例: 1 var person = new O

Javascript数据类型——number类型

        ECMAScript规范中使用IEEE754格式来表示整数和浮点数.支持十进制.八进制以及十六进制.有一点注意的是八进制数字在严格模式下是无效的,这可能会影响到程序的正常运行. 避免浮点数等值判断:       众所周知,基于IEEE754进行数据计算会产生舍入误差,最为经典的例子: 0.1+0.2 = 0.30000000000000004 ; 0.15+0.15 = 0.3;        在实际开发中应尽量避免使用浮点数的等值判断. NaN:      关于NaN有两点特别

JavaScript获取浏览器类型与版本

原文:http://www.cnblogs.com/xdp-gacl/p/3926848.html 从网上找到一段使用JavaScript判断浏览器以及浏览器版本的比较好的代码,在此记录一下: <script type="text/javascript"> var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[

JavaScript 实现枚举类型

function enumeration(namesToValues) { var enumeration = function() { throw "Can't Instantiate Enumeration"} var proto = enumeration.prototype = { constructor: enumeration, toString: function() { return this.name; }, valueOf: function() { return