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

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

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

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

js中的栈、堆、队列、内存空间

栈的特点是LIFO,即后进先出(Last in, first out)。数据存储时只能从顶部逐个存入,取出时也需从顶部逐个取出。队列的特点是是FIFO,即先进先出(First in, first out)。堆的特点是无序的key-value键值对存储方式。

将 JSON 数据格式输出至页面上

JSON 是一种轻量级的数据交换格式,它有键值对集合(js 中的对象)和数组两种结构。 JSON 是一个通用的格式,在前后端语言中都能跟该 JSON 打交道。有时候我们需要将 JSON 格式输入至页面展示的需求

在 React-Native 中持久化 redux 数据

在最近的一个项目中,要求对 redux 数据做持久化处理,经过研究后成功实现,在此记录一下过程,我们可以使用 redux-persist 对数据做持久化处理,安装npm i --save redux-persist

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

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

ES6中Set、Map数据结构

ES6 提供了一种类似于数组的新的数据结构 Set。它的成员的值都是唯一的,没有重复的值。WeakSet与Set数据结构类似,但是有2个不同点。1、WeakSet 的成员只能是对象,而不能是其他类型的值

原生JS数据绑定的实现

双向数据绑定是非常重要的特性 —— 将JS模型与HTML视图对应,能减少模板编译时间同时提高用户体验。我们将学习在不使用框架的情况下,使用原生JS实现双向绑定 —— 一种为Object.observe

处理 JavaScript 中的非预期数据

动态类型语言的最大问题就是无法保证数据流总是正确的,因为我们无法“强行控制”一个参数或变量,比方说,让它不为 null。当我们面对这些情况时的标准做法是简单地做一个判断:这样做的问题在于会污染我们的代码

js实现简单的数据监听

主要是用Object.defineProperty实现类似vue的数据绑定。输出的data.name 并不是tom,而是name被读取了,因为defineProperty对data的name字段进行的监听劫持,修改了,name字段本应该返回的值。

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

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

单向数据流和双向数据流

react的特色是单向数据绑定;而vue中的特色是双向数据绑定。不过vuex和redux这两个状态管理器都是提倡单向数据流来管理数据。只不过vue为了众多UI控件的考虑提供了双向数据绑定的方式

点击更多...

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