【JS基础】类型转换——不同数据类型比较

小试牛刀

  输出下列数据比较结果

    [] == 0; //==============================================================true
    [] == false; //==========================================================true
    [] == undefined; //======================================================false
    [] == null; //===========================================================false
    [] == ‘‘; //=============================================================true

    0 == false; //===========================================================true
    0 == undefined; //=======================================================false
    0 == null; //============================================================false
    0 == ‘‘; //==============================================================true

    false == undefined; //===================================================false
    false == null; //========================================================false
    false == ‘‘; // =========================================================true
    false == ‘false‘; //=====================================================fasle

    undefined == null; //====================================================true
    undefined == ‘‘; // =====================================================false
    undefined == ‘undefined‘; //=============================================false

    null == ‘‘; //===========================================================false

  有没有全对呢?If the answer is "yes", congratulations!

两个不同类型数据比较时隐式转换规则

  1)  数字和字符串、布尔类型、数组进行比较时,字符串(或布尔类型、或数组)先转换为数字(Number),再进行比较;数组转数字请参看后文。

    123 == ‘123asd‘; //false
    123 == ‘123‘; //true

    123 == false; //false
    123 == true; //false

  使用 if(num) 和 if(num == true) 结果不一样。前者使用Boolean()转换Num, 后者使用Number转换true。

    var num = 123;
    if(num) {
        console.log(1); //输出1
    }
    if(num == true) {
        console.log(2); //无输出
    }

    var str = "qwe";
    if(str) {
        console.log(1); //输出1
    }
    if(str == true) {
        console.log(2); //无输出
    }

  

  2) 字符串和布尔类型比较,看完下面的代码我疯了。如果一定要给一个解释,那么一定是进行比较的两个数据同时经过Number()的洗礼后再进行比较。数组和布尔类型的比较也如此。

    "qwe" == false; //false
    "qwe" == true; //false
    "" == false; // true
    "" == true; //false

    [] == false; //true
    [0] ==false; //true
    [00] ==false; // true
    [0,0] == false ; //false

  3) undefined 除了和null进行非全等比较返回true,其它均返回false。null 除了和 undefined进行非全等比较返回true,其它均返回false。

  4) 数组(或对象)和字符串进行比较时,数组(或对象)会转换成字符串再进行比较。

    [] == ""; //true
    [0] == ""; //false
    [0] == "0"; //true

    var obj = {a: 1};
    obj == ""; //false
    obj == "[object Object]"; //true

Number() 强制转换成数值

  1) 字符串转数值,能解析的返回数值,不能解析的返回NAN(Not a Number)。

    Number(‘123‘); //123
    Number(‘123shj‘); //NAN
    parseInt(‘123shj‘); // 123   Number(‘\t\v\r12.34\n‘); // 12.34   parseInt(‘\t\v\r12.34\n‘); // 12

  2) 布尔值转数值

    Number(true); // 1
    Number(false); //0

  3) Unfined 转数值

    Number(‘undefined‘); // NAN

  4) null 转数值

    Number(null); // 0

  5) 对象转数值

    Number({a: 2}); // NAN

   

  

String() 强制转换成字符串

  1) 原始数据类型转换为字符串,相当于直接把原数据用引号包起来。

    String(123); // "123"
    String(true); // "true"
    String(undefined) // "undefined"
    String(null); // "null"

  2) 对象转字符串

 

Boolean() 强制转换成布尔类型

  所有对象转换为Bool类型都为true,只有以下几个数值转换为Bool为false: undefined/null/0/NAN/""。

   undefined == false 返回 false, Boolean(undefined) = false.

   [] == false 返回true,  Boolean([]) = true.

    Boolean(undefined); //false
    Boolean(null); //false
    Boolean(0); //false
    Boolean(NAN); //false
    Boolean(""); //false
    Boolean([]); //true
    Boolean({}); //true
    Boolean(new Boolean(false)); // true

结束语

若有不足之处,欢迎指正。

参考地址

[1] 数据类型转换.阮一峰. http://javascript.ruanyifeng.com/grammar/conversion.html

[2] http://www.jb51.net/article/34190.htm

时间: 2024-09-29 01:11:55

【JS基础】类型转换——不同数据类型比较的相关文章

百万年薪python之路 -- JS基础介绍及数据类型

JS代码的引入 方式1: <script> alert('兽人永不为奴!') </script> 方式2:外部文件引入 src属性值为js文件路径 <script src="test.js"></script> 变量声明 变量名是区分大小写的. 推荐使用驼峰式命名规则.首字母大写 保留字不能用做变量名. 声明前要加var关键字. var a = 1; 加var定义的变量是全局变量,在函数里定义会是局部变量 不加定义的变量不管在哪,都是全局

逆战班!js基础知识以及数据类型

## 1.javascript概念 ###    1.什么是javascript ?      javascript简称 JS,是运行在 javascript 解释器的解释型脚本语言?                  浏览器自带JS解释器 编译型:运行之前先检查语法是否正确,不正确是不能运行的.比如:Java.C.C++.c#..      解释型:运行之前不需要检查任何东西,碰到错误时,就会停止运行比如:javascript  PHP          javascript解释器     

js基础之引用数据类型

引用类型数据: 也就是对象类型Object type,比如:Object .Array .Function .Data等. javascript的引用数据类型是保存在堆内存中的对象. 与其他语言的不同是,你不可以直接访问堆内存空间中的位置和操作堆内存空间.只能操作对象在栈内存中的引用地址. 所以,引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址.通过这个引用地址可以快速查找到保存中堆内存中的对象. var obj1 = new Object(); var obj2 = obj1; o

js基础之基本数据类型

ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值. .常见的基本数据类型: Number.String .Boolean.Null和Undefined.基本数据类型是按值访问的,因为可以直接操作保存在变量中的实际值.示例: var a = 10; var b = a; b = 20; console.log(a); /

js基础--变量、数据类型、循环、判断、函数定义

1.变量 var name="mxm"//局部变量 name="mxm"//全局变量 2.基本数据类型 //数字 a=1 //字符串 a="mxm" //列表 a=['1','2','3'] //字典 a={'k1':'v1','k2':'v2'} //布尔值 true false 3.for循环 a=['a','b','c'] for(var i=0;i<a.length;i++){ console.log(a[i]); } 4.if条件

1.js基础语法

1.Js基础语法 1.数据类型 JavaScript不区分整数和浮点数,统一用Number表示 NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示 Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity 2.比较运算符 要特别注意相等运算符==.JavaScript在设计时,有两种比较运算符: 第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果: 第二

javascript里的基础语法、数据类型以及类型转换

Js基础语法 在js里是区分大小写的 标识符:指变量,数组,函数等名字.定义标识其实就是取名字的过程. 硬性要求:指必需要满足的,否则无法通过编译 可不满足 硬性要求内容: 1.由数字,字母和下划线,以及$组成,但不能以数字开头,禁止使用ES里面的关键字和保留字(其实就是ES里内置的标识符). 2.区分大小写 软性要求内容:望文知意 命名法则 驼峰命名法:驼峰命名法分两种,大写是大驼峰(帕斯卡命名法),第一个单词首字母小写是小驼峰. 匈牙利命名法:就是以一个或者多个单词组成.前面还会加上一个固定

js基础之数据类型

一:JavaScript 数据类型:字符串.数字.布尔.数组.对象.Null.Undefined JavaScript 字符串;        var carname="Bill Gates"; JavaScript 数字;        var x1=34.00;      //使用小数点来写        var x2=34; //不使用小数点来写 JavaScript 布尔:        var x=true;var y=false JavaScript 数组: var car

JS基础

JavaScript 第 一 部 分 一.定义 基于浏览器的语言: 基于面向对象:c语言面向过程,java面向对象:继承,封装,多态; 事件驱动: 脚本语言: 二.作用: 表单验证,减轻服务端的压力: 添加页面动画效果: 动态更改页面内容: AJax网络请求: 三.组成部分: ECMAScript;脚本程序语言, 语言标准ES5.1,最新ES6.0; 语法,变量和数据类型, DOM; 文档对象模型 ;文档节点 BOM浏览器对象模型window:history,doucument,location

【2017-03-28】JS基础、windows对象、history对象、location对象

一.JS基础 JS - javaScript 1.js功能: 1).进行数据的运算.2).控制浏览器的一些功能.3).控制元素(属性.内容.样式) js引用位置: 可以放在html页的任意位置. 推荐放在<html></html>后边. 也可以放在一个以js结尾的文件内,将该文件引用到html页内. 2.格式: <script type="text/javascript"> js代码 </script> 1.alert("&qu