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是引用类型,其它的五种是基本类型或者是原始类型.我们可 ...
随机推荐
- vue 中的组件通信
vue中组件通信,一般分为三种情况,父与子,子与父,子子之间. 一.父与子通信 父组件将值传给子组件,一般通过props,设置默认的类型.调用的时候通过 xx=" ", 或者:XX ...
- hrtimer高精度定时器的简单使用【学习笔记】
#include <linux/module.h> #include <linux/kernel.h> #include <linux/hrtimer.h> #in ...
- FZU2150 Fire Game —— BFS
题目链接:https://vjudge.net/problem/FZU-2150 Problem 2150 Fire Game Accept: 2702 Submit: 9240 Time Li ...
- POJ3087 Shuffle'm Up —— 打表找规律 / map判重
题目链接:http://poj.org/problem?id=3087 Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Sub ...
- hdu 4398 Template Library Management(贪心+stl)
题意:n道题,每道题需要一个模板,现在手头有m个模板(标号1~m),解题的时候,如果没有需要的模板,可以向朋友借,但是用完之后必须在还给朋友一个模板(也就是说保持手头拥有m个模板),求解完n道题最少需 ...
- fuse的mount机制-流程及参数
在bbfs中,传递的参数有两个目录,fuse将一个目录挂载在另一个目录下. 在ssfs中,传递的参数只有一个目录(传递两个目录fuse会出错). 问题:那么fuse的mount机制到底需要几个目录参数 ...
- Android适合组件化开发的路由框架:Launch
1.概述 最近越来越不想写代码了,特别是一些重复性的代码,比如由于每次启动一个 Activity,我们都会很习惯的在 Activity 中写下: public static void launch(A ...
- 连接mysql报错-Can't connect to MySQL server on
1.问题: 在Windows 上远程连接数据库报错-Can't connect to MySQL server on... 但是重启系统后就可以连接: 2.这种原因大致是因为系统缓冲区空间不足或列队已 ...
- Git分布式版本控制工具
一.安装Git 1.下载Windows版的Git:msysgit:官方下载地址:http://msysgit.github.io,安装选定要安装的目录(路径杜绝中文),剩下的按照默认安装即可,参考: ...
- 看鸟哥的Linux私房菜的一些命令自我总结(三)
-修改文件创建时间或创建新文件 touch [-acdmt] -a :仅修改访问时间 -c :仅修改文件的时间,若该文件不存在则不创建新文件 -d :后面可以接想要修改的日期而不用当前的日期 - ...