javascript中的typeof返回的数据类型_以及强制/隐式类型转换

时间: 2018-04-17阅读: 1041标签: 数据

由于js为弱类型语言拥有动态类型,这意味着相同的变量可用作不同的类型。  

 

typeof返回的数据类型

typeof 运算符返回一个用来表示表达式的数据类型的字符串,目前typeof返回的字符串有以下这些: 

“undefined” ——未定义
“boolean”——布尔值
“string”——字符串
“number”——数值
“object”—— 对象,数组和null
“function”——函数
“symbol”—— 独一无二的值    (ES6)  

对于数字类型的操作数而言, typeof 返回的值是 number,在JavaScript中,特殊的数字类型还有几种: 

Infinity                //表示无穷大特殊值
NaN            //特殊的非数字值
Number.MAX_VALUE     //可表示的最大数字
Number.MIN_VALUE    // 可表示的最小数字(与零最接近)
Number.NaN        //特殊的非数字值
Number.POSITIVE_INFINITY //表示正无穷大的特殊值
Number.NEGATIVE_INFINITY  //表示负无穷大的特殊值


强制类型转换  

Number(参数)把任何类型转换成数值类型

parseInt(参数1,参数2)将字符串转换成整数

parseFloat()将字符串转换成浮点数字

string(参数):可以将任何类型转换成字符串

Boolean()可以将任何类型的值转换成布尔值


隐式类型转换  

(1).四则运算

加法运算符+是双目运算符,只要其中一个是string类型,表达式的值便是一个String。

对于其他的四则运算,只有其中一个是Number类型,表达式的便是一个Number。

对于非法字符的情况通常会返回NaN:'1'*'a'    // => NaN,这是因为parseInt(a)值为NaN,1*NaN还是NaN

3 + true; // 4
"hello"2" + 3; // "23"
1 + 2 + "3"; // "33"

var x = NaN;
x === NaN; // false

isNaN("foo"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN({ valueOf: "foo" }); // true


(2).判断语句

判断语句中的判断条件需要是 Boolean类型,所以条件表达式会被隐式转换为Boolean。其转换规则则同Boolean的构造函数。比如:

var obj = {};
if(obj){
  while(obj);
}


(3).Native代码调用

JavaScript宿主环境都会提供大量的对象,它们往往不少通过JavaScript来实现的。JavaScript给这些函数传入的参数也会进行隐式转换。例如BOM提供的alert方法接受String类型的参数:

alert({a:1});  //=>[object Object]


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/655

Js数据类型转换_JavaScript 那些不经意间发生的数据类型自动转换

JavaScript自动类型转换真的非常常见,常用的一些便捷的转类型的方式,都是依靠自动转换产生的。比如 转数字 : + x 、 x - 0 , 转字符串 : \\\"\\\" + x 等等。现在总算知道为什么可以这样便捷转换。

两种数据消费方式:pull与push

pull和push,是在软件中消费数据的两种方式,它们描述了数据生产者(或持有者)与数据消费者之间是如何通讯的。过去我们肯定了解过它们,不过可能会在编程中会忽略它们之间的区别与联系

CSS通用数据类型

CSS中属性的值有着许多种格式。为了让用户代理(即浏览器)能够识别一个值是否有效,则需要确认该值是否符合该类值支持的格式的其中一种。这些属性值所支持的格式叫做数据类型,在规范中用<this>的形式标识。

Js中的数据传输形式JSON和AJAX技术

今天为大家讲解JavaScript中的数据传输形式JSON和AJAX技术。JSON的全称是JavaScript Object Notation(js对象表示法),它是一种存储和交换文本信息的语法,主要用于序列化对象、数组、字符串、Boolean、数字和null

Js数据劫持与数据代理

数据劫持即使用Object.defineProperty()实现了vue的双向绑定。先来看看它是如何实现的;proxy即代理的意思。个人理解,建立一个proxy代理对象(Proxy的实例),接受你要监听的对象和监听它的handle两个参数。

8种常见数据结构及其Javascript实现

做前端的同学不少都是自学成才或者半路出家,计算机基础的知识比较薄弱,尤其是数据结构和算法这块,所以今天整理了一下常见的数据结构和对应的Javascript的实现,希望能帮助大家完善这方面的知识体系。

Js如何向 ArrayBuffer 写入Uint64数据?

JS 的 Number 精度只有 「-2^52 ~ 2^52 - 1」,可以通过 Number.MAX_SAFE_INTEGER 查看 JS 的安全运算范围。由于这个原因,在一些需要更精确运算的应用场景中,JS Number 精度就不够了,例如需要把 64 位数字写入到 buffer 数组中。

Redis 的底层数据结构(SDS和链表)

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。可能几乎所有的线上项目都会使用到 Redis,无论你是做缓存、或是用作消息中间件,用起来很简单方便

Vue项目数据动态过滤实践

页面从后台拿到的数据是由0、1之类的key,而这个key代表的value比如0-女、1-男的对应关系是要从另外一个数据字典接口拿到的

几个数据持久化框架Hibernate、JPA、Mybatis、JOOQ和JDBC Template的比较

因为项目需要选择数据持久化框架,看了一下主要几个流行的和不流行的框架,对于复杂业务系统,最终的结论是,JOOQ是总体上最好的,可惜不是完全免费,最终选择JDBC Template。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广