重操JS旧业第二弹:数据类型与类型转换

时间:2023-02-26 08:56:46

一 数据类型

1 js中的数据类型

1.1 数据类型列举

1)number类型

2)boolean类型

3)string类型

4)对象类型

5)函数类型

6)undefined类型

1.2 数据类型获取

typeof :注意这个并不是一个函数,而是一个操作符,怎么使用? typeof 'asd'  结果:string

instanceof:主要用在对象的类型检测上,因为typeof null的结果也是object,这个时候typeof在对象领域的类型检测就力不从心了,

比如:var date=new Date(); date instanceof object结果是true,同时 date instanceof Date也是true,进一步检测date类型

2 各种类型详解

2.1 number类型

2.1.1概念理解:即所有实数,包括整型,浮点型,这个很好理解,但是有个特例

2.1.2特殊NaN:NaN本身是一个number类型,但是并不知道它的值是多少,NaN常常是由于类型转换或者函数返回值,比如将字符串'aa'转换为number自然不知道转换后他该是什么值只好使用NaN表示

NaN有多特殊,

(1)NaN自己都不等自己,NaN==NaN:结构为false,你说特殊不

(2)判断一个变量是不是NaN还只能使用isNaN()函数来判断,这里对于一个变量是不是NaN,在isNaN()函数使用中,其实如果变量不是number则先转换为number,对于哪些转换为NaN的自然就是true,你说特殊不呢,那么怎么转换,转换规则呢?

A  boolean true直接为1 false为0

B string 则按照第一个字符进行如果第一个失败则直接返回NaN

C parseInt(),parseFloat()分别针对不同特殊情况转换

D 对象则先调用对象的ValueOf()返回值进行转换

E undefined,null直接转化为NaN

2.1.3 Number范围,Number.MAX_Value,Number.Min_Value,如何判断一个数值处于最大和最小值之间使用isFinite()函数判断,

对于处于无穷大或者无穷小则使用Infinity表示如果为负无穷则在前面加负号‘-’

2.2 boolean类型

只有true false两个值,对于js区分大小写来说TRUE和FALSE并不划等号

2.2.1 类型转换

1)number类型大于0则转换为true,反之false

2)string计算string.length属性长度,大于0则为true反之false

3)对象非空,即为true反之false

4)undefined,NaN均为false

2.3 string类型

2.3.1 转换为字符串

1)使用toString()方法,但是有2个特殊对于变量类型已知情况下是没有这个方法,就是null和undefined,比如var r=null,r.没有toString()方法,对于函数或者转换在操作后并不知道返回值是什么类型情况下可以使用toString()方法,比如

function convert(){return null};var rs=convert(); rs.toString()结果为null

2)boolean转化为字符串,true结果为'true',相应的false为‘false’

2.4 function类型

函数即对象

2.5 对象类型

js中对象是一组变量和函数的组合,所以对象类型实际上是简单类型的组合。相应的转换在前面也已经提到

二 类型转换

在上面数据类型转换中也基本提到类型转换规则,js中这些规则比较细碎,这也是js比强类型语言如c#,java要麻烦一点的地方

三 操作符

3.1 js中操作符大致与c#和java相当,有一个特殊的操作符==和===

==:意思是比较两个变量,先不比较两个变量类型,而是将他们进行类型转换为同一种类型的结果,再进行比较。这其中的转换规则,比较多

重操JS旧业第二弹:数据类型与类型转换

===:又名全等操作符,意思是两个对象首先要类型相同,再则是结果相同,如果使用===先判断类型相同再比较结果,如果类型都不同则直接返回false,===在对象的比较中比较常见

3.2 特殊

NaN与NaN并不相等,即NaN==NaN:false

undefined与null相等,在js中的解释是undefined继承自null,很特殊吧,即undefine==null,结果为true

NaN==undefined结果为false

重操JS旧业第二弹:数据类型与类型转换的更多相关文章

  1. 重操JS旧业第九弹:函数表达式

    函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解 ...

  2. 重操JS旧业第一弹:Script与JS加载

    不管js被包装成什么样子,最终交给浏览器执行的js都是原生的,都离不开原生js的原理. Script标签纸html中用来加载js的标签,我们知道js可以是来自外部,本地,或者内部一段代码,在这里只讨论 ...

  3. 重操JS旧业第八弹:面向对象与继承

    js里面没有语言语法层面的继承机制,但这并不意味着js就不能实现继承,利用js属性和方法动态性来模拟实现继承,通过总结大概有如下方法实现: 1 原型链继承 我们知道原型在对象中扮演着重要的角色,函数本 ...

  4. 重操JS旧业第六弹:基本类型包装

    在前面已经知道js中的类型有boolean,string,number,undefined,function,object,其中boolean,number,string为值类型.所谓的基本类型包装, ...

  5. 重操JS旧业第十一弹:BOM对象

    BOM对象即浏览器内置对象,现今流行的浏览器内核有Safri,Firefox,Chrome,Opera,IE其中IE的兼容性是最蛋疼的在10及其过后还好点,但是现在IE基本上淘汰,而国内像360这种垃 ...

  6. 重操JS旧业第十弹:闭包

    闭包是js最难理解,也是最蛋疼的一个名词,仿佛只可意会不可言传一样,有人说闭包说白了就是函数嵌套,也有人说闭包就是函数能够访问函数外部的变量,而内部的外部访问不了: 貌似都非常有道理,其实仔细想来只不 ...

  7. 重操JS旧业第七弹:面向对象与对象创建

    JS是一种完全面向对象的程序设计语言,在面向对象处理方面,具有多种多样的实现方式,加之对象成员的动态性使得这门语言更加灵活:而js对象成员动态性也是创建和扩展对象的有力方式. 1 对象成员动态性 属性 ...

  8. 重操JS旧业第五弹:函数

    函数在任何编程语言中起着非常重要的位置,因为他是功能的最小单元,在js中函数是一种类型 Function 1 申明与定义 显示声明:function cc(){};函数名其实是函数的一个指针,函数名某 ...

  9. 重操JS旧业第四弹:Date与Global对象

    1 Date原理 Date类型表示时间,js中采用UTC国际协调时间,以1971年1月1日0分0秒0微秒开始,经过的毫秒数来表示时间,比如一年的时间计算 1分:1000*60: 1小时:1000(毫秒 ...

随机推荐

  1. unity 状态机 + svn + 码云 上篇

    最近刚找到在实习,忙于公司一个c++ 项目 ,一直想写博客来着,没时间写今天熬夜打算先献上自己前几天自己封装的一个fsm状态机 话不多说,直接上正题,这篇博客主要是在学校的时候状态机一直使用的是pla ...

  2. oprofile 安装使用

    ubuntu上要编译安装oprofile.现在版本(0.9.9)的oprofile的编译需要binutil-dev libpopt-dev apt-get install binutil-dev li ...

  3. 我应该直接学Swift还是Objective-C?

    当我们发布了Swift语言学习课程之后,收到了很多邮件和私信来问自己是否还需要学习C或者Objective-C.此外,人们似乎还在迷惑Swift到底适合iOS开发生态中的哪些部分.通过这篇文章,我希望 ...

  4. 解决github提交commit,contributions不统计显示绿色的问题

    最近使用GitHub Desktop时,发现自己好多次的commits都没有被记录在Contributions中,但是点开项目详情里面可以看到自己的commit确实上传成功了,所以就忧伤了,为什么没有 ...

  5. Cs Round#54 D Spanning Trees

    题意:构造一张N个结点无重边.无自环的无向图.使得其最小生成树和最大生成树共享K条边. 样例一很具有启发性: 当K!=0时,我们可以先构造出一条链,链的长度为n-k的链,作为最小生成树的一部分,之后由 ...

  6. 【MQ】消息队列及常见MQ比较

    一.什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰. ...

  7. LeetCode(7):颠倒整数

    Easy! 题目描述:给定一个范围为 32 位 int 的整数,将其颠倒. 例1: 输入:132 输出:321 例2: 输入:-123 输出:-321 例3: 输入:120 输出:21 注意:假设我们 ...

  8. 13,EasyNetQ-错误条件

    在本节中,我们将看看任何消息系统中可能出现的各种错误情况,并查看EasyNetQ如何处理它们. 1,我的订阅服务死亡 你已经写了一个订阅了我的NewCustomerMessage的windows服务. ...

  9. poj 2352 stars 【树状数组】

    题目 题意:按y递增的顺序给出n颗星星的坐标(y相等则x递增),每个星星的等级等于在它左边且在它下边(包括水平和垂直方向)的星星的数量,求出等级为0到n-1的星星分别有多少个. 因为y递增的顺序给出, ...

  10. 20155302《网络对抗》Exp4 恶意代码分析

    20155302<网络对抗>Exp4 恶意代码分析 实验要求 •是监控你自己系统的运行状态,看有没有可疑的程序在运行. •是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工 ...