ES之基本数据类型之间的显示转换和隐式转换
typeof(数据)/ typeof 数据 判断数据的数据类型,typeof返回的都是字符串
输出结果类型有:number、string、boolean、 undefined、object、function。
注意点:
①typeof里面的数据是null,输出object,虽然null属于原始值,
但是系统会认为它是给对象占位置用得,历史遗留问题。
②typeof里面的数据是未声明的变量,控制台不报错,
输出undefined,这也是未声明变量唯一不报错的地方。
————————————————————————————————————————————————————————————
类型转换
显示类型转换:
Boolean() 除了0 、null 、undefined 、false 、""、 是false,其他都是true
Number(mix) undefined和只要有非数字(除了‘- +’)的字符串结果都为NaN,
parseInt(String ,[radix])
null、undefind、boolean的值为NaN。
radix参数:代表当前数据当前哪种进制数,并将该数据转换成十进制数。
radix范围为2-36.
当没有radix参数时:
系统默认为是十进制。纯字符的字符串、以非数字开头的字符串返回的是NAN。
parseInt方法只能正常转换纯数字和以数字开头的字符串。
parseInt方法从数字开始取直到小数点或非数字位结束。
当有radix参数时:
当不属于十进制时,若数据为number或纯数字字符串,会将该数据转换成十进制数;
当大于十进制数时,纯字符的字符串、以非数字开头的字符串会先转换成ascii码然后转换成十进制数。
parseFloat(String)
和parseInt相似,只是在数字和非数字的串中,从数字开始直到第一个小数点后一数字位结束。
String(mix) 任何数据类型都能转换成字符串。
toString([radix]) undefined和null没有toString方法。
radix参数:将十进制数转换成当前进制数。
当数据为数字类型时,radix的作用是将数据a转换成radix当前值的进制数的字符串。
————————————————————————————————————————————————————————
隐式类型转换
————————————————
内部用Number()进行转换集合
isNaN() 判断数据a转换成数字类型后是否为NaN。
++/-- 自增、自减 无论自增自减放前面或后面都是先进行Number(数据a)
转换,再进行表达式的运算。
正负、-、*、/ 减、乘、除 判断数据是数字还是NaN,若为数字则正常计算,若为NaN则直接输出NaN。
> 、< 、>= 、<= 字符串和数字比较,则用Number()转换成数字。
字符串和字符串比较则用ascii代码比较
当1>2>3... 这种一个表达式中有多个比较运算符连写时,逐个判断,
true或false的个数为偶数则表达式为true,反之为false。
————————————————
内部用String进行转换
+ 加法 当加号两侧只要有一个为字符串,先进行string类型转换。
应用:将其他类型的数据加上一个空串就能变成字符串。
注意:当作为打印输出时,即使是纯数字的字符串与数字相加也还是做连接作用。
————————————————
内部用boolean()进行转换集合
&&/||/! 与、或、非 判断的时候对数据进行布尔值转换,但是输出结果是原值或表达式结果。
==、!= 数字相同的字符串和数字比较,为true, 1 == true和0 == false成立,
NaN == NaN 不成立,哪怕是不进行类型转换的"绝对等于"在NaN面前也没用,
这是唯一一个不等于任何东西的————非数。
注意点:undefined和null能转换成number类型,但是他们两个就是不能和数字作比较,因为比较的时候,他们不进行隐式类型转换。
undefined == null 两者能相等是系统内部进行的是布尔类型转换。
———————————————
不发生类型转换
=== / !== 绝对等于、绝对不等于
对于原始值来说,表面上一模一样就绝对等于,否则就绝对不等于, 但是NaN === NaN 为false
注意点:当引用值相比时,它们比的是引用地址,只要地址相等,绝对等于也成立。
ES之基本数据类型之间的显示转换和隐式转换的更多相关文章
- JS的类型转换,强制转换和隐式转换
JS的类型转换 1.强制转换 通过String(),Number(),Boolean()函数强制转换 var str=123; var str1='123'; console.log(typeof s ...
- JavaScript学习笔记——数据类型强制转换和隐式转换
javascript数据类型强制转换 一.转换为数值类型 Number(参数) 把任何的类型转换为数值类型 A.如果是布尔值,false为0,true为1 B.如果是数字,转换成为本身.将无意义的后导 ...
- c# 强制转换, 隐式转换, 显式转换
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- scala中隐式转换之隐式转换调用类中本不存在的方法
/** * Created by root * Description : 隐式转换调用类中本不存在的方法 */ class Person(name : String){ def getPersonN ...
- 【java】学习路线1-类型转换、隐式转换、强制转换
/**文档注释,这里是一段文章一般放在类的外面*/public class HelloWorld{ //这个是注释的文本 public static void main(String[] ...
- C语言数据类型的转换(隐式转换)
算术运算符中的转换规则: double ←── float 高↑long↑unsigned↑int ←── char,short 低 注意: 图中横向箭头表示必须的转换,如两个float型数参加运算, ...
- C#隐式转换和显示转换举例--C#基础
高精度的数据类型转换为低精度的数据类型是显示转换,低精度的转换为高精度的是隐式转换. 温馨提示:不能说强制类型转换是从低精度到高精度. int a=666;float b=(float)a: 由a到b ...
- 显示转换explicit和隐式转换implicit
用户自定义的显示转换和隐式转换 显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码. 隐式转换implicit关键字告诉编译器只有当源代码中指定了显 ...
- js隐式转换
JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object.object是引用类型,其它的五种是基本类型或者是原始类型.我们可 ...
随机推荐
- (C\C++)inline关键字
背景(C&C++中) inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义如: #define ExpressionName(Va ...
- [RK3288][Android6.0] 调试笔记 --- 系统识别不同硬件版本方法【转】
本文转载自:http://m.blog.csdn.net/kris_fei/article/details/70226451 Platform: RockchipOS: Android 6.0Kern ...
- PLSQL 安装说明
PLSQL安装说明. 1.安装oracle 11g ,2030端口设置防火墙例外.2.PLSQL Developer 9.0.0.1601是绿色版,复制到本地即可.3.PLSQL->Tools- ...
- YTU 1055: 输入字符串以及输出
1055: 输入字符串以及输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 694 解决: 476 题目描述 编写一函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其它字 ...
- [Java] 读取文件
1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如 ...
- BZOJ_2196_[Usaco2011 Mar]Brownie Slicing_二分答案+贪心
BZOJ_2196_[Usaco2011 Mar]Brownie Slicing_二分答案+贪心 Description Bessie烘焙了一块巧克力蛋糕.这块蛋糕是由R*C(1 <= R,C ...
- 基于redis实现tomcat8的tomcat集群的session持久化实现(tomcat-redis-session-manager二次开发)
前言: 本项目是基于jcoleman的tomcat-redis-session-manager二次开发版本 1.修改了小部分实现逻辑 2.去除对juni.jar包的依赖 3.去除无效代码和老版本tom ...
- Code-NFine:NFine介绍
ylbtech-Code-NFine:NFine介绍 1. NFine平台介绍返回顶部 1. 使用时请务必保留来源,请勿用于违反我国法律的web平台.如诈骗等非法平台网站.版权最终解释权归<NF ...
- nodejs supvisor模块
在测试nodejs程序的时候,每次都需要在控制台编译,非常的麻烦.supervisor是一款无需重复手动编译,自动后台监听文件变化来自动编译,并且不需要在项目内require,使用非常的方便. 使用方 ...
- Golang项目的测试实践
Golang项目的测试实践 最近有一个项目,链路涉及了4个服务.最核心的是一个配时服务.要如何对这个项目进行测试,保证输出质量,是最近思考和实践的重点.这篇就说下最近这个实践的过程总结. 测试金字塔 ...