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

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

由于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.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

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

js算法_判断数字是否为素数/质数

质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。比如100以内共25个,js实现代码如下。

如何使用 jq 接收 blob 数据

目前 jq 用的人还是挺多的,在一些简单的促销 h5 页面,用 jq 去实现一些简单的功能还是比较方便的。本文展示如何用 JQ 去请求一个 blob 对象的 img 图片并渲染到页面上

google protobuf 数据类型_理解Protobuf数据格式解析

什么是protobuf?Protobuf是Google开源的一款类似于Json,XML数据交换格式,其内部数据是纯二进制格式。这篇文章主要介绍google protobuf的特点与使用

ES6中的Set数据结构以及使用使用场景

Set 是ES6提供的一种新的数据结构,它允许你存储任何类型的唯一值,而且Set中的元素是唯一的。我们用new操作符来生成一个Set对象,set结构的实例有以下属性

链表!比数组更适合做增删操作的数据结构

链表和数组的对比:在大多数语言中,数组的大小是固定的,从数组的起点或中间添加或删除元素的成本很高,因为需要移动元素,链表中的每一个元素在内存中不是连续放置的,和它左右两侧元素是没有关系的

为什么云端会不断泄漏数据?

虽然数据泄露的程度可能会有所不同,并且数据可能因内部威胁、黑客攻击和员工疏忽而丢失,但所有数据泄露都包含了可能会被盗窃者轻易读取的个人身份信息。而云端发生的数据泄露,影响就会放大了

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

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

Vue项目数据动态过滤实践

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

Js栈的实现与应用

在计算机编程中,栈是一种很常见的数据结构,它遵从后进先出(LIFO——Last In First Out)原则,新添加或待删除的元素保存在栈的同一端,称作栈顶,另一端称作栈底。在栈中,新元素总是靠近栈顶,而旧元素总是接近栈底

Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结

Vue 无法检测实例被创建时不存在于 data 中的 property原因:由于 Vue 会在初始化实例时对 property 执行 getter/setter 转化,所以 property 必须在 data 对象上存在才能让 Vue 将它转换为响应式的。

点击更多...

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