javascript中6种基本数据类型详解
javascript中有5中数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String,还有一种复杂数据类型——object,object本质是由一组键值对组成的。
typeof操作符:用于检测给定变量的数据类型,对一个值试用typeof操作符可能返回下列某个字符串: ♦ “undefined”——表示值未定义; ♦ “boolean”——表示值是布尔值 ;♦ “string”——表示值是字符; ♦ “number”——表示值是数值; ♦ “object”——表示值是对象或null;♦“function”——表示值是函数;
Undefined类型:Undefined类型只有一个值即undefined。对未初始化和未声明的变量执行typeof操作符都会返回undefined,这就说明当我们对一个变量执行typeof操作符时我们不能立即确定这个变量是未初始化还是未声明,因此显示的初始化变量依然是明智的选择,但不应该初始化为undefined。
- Null类型:Null类型是第二个只有一个值的数据类型即null。null值表示一个空指针对象,因此typeof操作符检测null值时返回“object”。如果定义的变量将来用于保存对象那么最好将该变量初始化为null而非其他值,这样只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
无论在什么情况下都没有必要把一个变量的值初始化为undefined,但对于意在保存对象的变量则应明确的初始化为null值。这样做不仅体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。
Boolean类型:Boolean类型有两个字面值:true和false。true不一定等于1,false不一定等于0。需要注意的是true和false是区分大小写的,也就是说True和False(以及其他的混合大小写形式)都不是Boolean值,只是标识符。在javascript中所有类型的值都有与这两个Boolean值等价的值,要讲一个值转换为布尔值可以调用转型函数Boolean()。
//这些转换规则对理解流控制语句(如if语句)自动执行响应的Boolean转换很重要
var message="hello";
if(message){
alert("value is true");
}数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 “”(空字符串) Number 任何非0数字 0和NaN Object 任何对象 null Undefined 不适用 undefined Number类型:
//浮点数值
var num1=1.1;
var num2=0.1;
var num3=.2; //有效,但不推荐由于保存浮点数值需要的空间是保存整数值的2倍因此javascript会不失时机 的将浮点数值转换为整数数值。
var num4=1.; //小数点后没有数字——解析为1
var num5=10.0;//整数——解析为10对于极大或极小的数值可以用e表示法,e表示法表示的数值等于e前面的数值乘以10的指数次幂,大小写e均可。
var num0=3.125E7; //3.125*10的7次方,等于31250000
var num5=3e-7; //3*10的负7次方,0.0000003
//浮点数值计算会产生舍入误差问题,这是使用基于IEEE754数值的浮点计算的通病,永远不要测试某个特定的浮点数值。
var a=0.1;
var b=0.2;
alert(a+b); //0.30000000000000004,特例2.数值范围:javascript能够表示的最小数值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中。如果某次计算的结果超出了javascript的数值范围则这个数值将被自动转换成特殊的Infinity值(负数则转换为-Infinity(负无穷),整数则转换为Infinity(正无穷))。正或负的Infinity值无法参与下一次的计算。使用isFinite()函数可以判断数值是否在最小值与最大值之间。
var result=Number.MAX_VALUE+0.1;
alert(isFinite(result)); //false,超出了最大值
console.log(Number.NEGATIVE_INFINITY); //-infinity
console.log(Number.POSITIVE_INFINITY); //infinity3.NaN:即非数值(Not a Number)。任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等。javascript定义了isNaN(),该函数接受一个参数,该参数可以是任何类型,函数在接收到一个参数后会尝试将这个参数转换为数值然后再判断是否不是数值,注意判断结果,不是数值返回true,是数值返回false。
//对isNaN()函数进行个人习惯封装
function isNum(number){
if(!isNaN(number)){
return true;
}
else{
return false;
}
}4.数值转换:
var num1=Number(true); //
var num2=Number(1.0); //
var num3=Number(""); //
var num4;
Number(num4); //undefined
var num5=Number(null); //
var num6=Number("00123abc"); //NaN
var num7=Number(""); //123,前导0被忽略var num1=parseInt("1a2s3f"); //
var num2=parseInt("fda123"); //NaN
var num3=parseInt(""); //NaN
var num4=parseInt("22.5"); //22
var num5=parseInt(070); //56(八进制数),前导0不会被忽略//parseFloat()与parseInt()有2个区别,1.parseFloat()第一个小数点有效;2.parseFloat()始终会忽略前导0。
var num1=parseFloat("012.32.gsa"); //12.32- String类型:数值、布尔值、对象、字符串值都有toString()方法,但null和undefined值没有。在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String(),这个函数能将任何类型的值转换为字符串,String()函数遵循下列转换规则:
/*
* 如果值有toString()方法,则调用该方法并返回结果
* 如果值是null,则返回“null”
* 如果值是undefined,则返回“undefined”
*/
alert(String(10)); //"10"
alert(String(true)); //"true"
alert(String(null)); //"null"
var test;
alert(String(test)); //"undefined" - Object类型:在javascript中Object类型是所有其他实例的基础。需要注意的是宿主对象(BOM和DOM对象)可能会也可能不会继承Object。
javascript中6种基本数据类型详解的更多相关文章
- JavaScript中的鼠标滚轮事件详解
JavaScript中的鼠标滚轮事件详解/*Firefox注册事件*/ ~~~Firefox: addEventListener('DOMMouseScroll', handler, false)if ...
- javascript中五种基本数据类型
前言: JavaScript中有五种基本数据类型(也叫做简单数据类型)分别为:undefined.null.bolean.number.string:另外还含有一种复杂的数据类型:object. 深入 ...
- JavaScript中typeof和instanceof深入详解
这次主要说说javascript的类型判断函数typeof和判断构造函数原型instanceof的用法和注意的地方. typeof 先来说说typeof吧.首先需要注意的是,typeof方法返回一个字 ...
- Redis实战 | 5种Redis数据类型详解
我们知道Redis是目前非常主流的KV数据库,它因高性能的读写能力而著称,其实还有另外一个优势,就是Redis提供了更加丰富的数据类型,这使得Redis有着更加广泛的使用场景.那Redis提供给用户的 ...
- JavaScript 中 apply 、call 的详解
apply 和 call 的区别 ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已. 原文作者:林 ...
- Javascript中的this关键字用法详解
在javascript里面,this是一个特殊的对象,它不像其他编程语言那样,是存储在实例中的值,直接指向此实例. 而是作为一个单独的指针,在不同的情况之下,指向不同的位置,这也是为什么我们会将它搞混 ...
- JavaScript中事件委托(事件代理)详解
在JavaScript的事件中,存在事件委托(事件代理),那么什么是事件委托呢? 事件委托在生活中的例子: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托 ...
- Java中23种经典设计模式详解
Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...
- JavaScript中继承的实现方法--详解
最近看<JavaScript王者归来>中关于实现继承的方法,做了一些小总结: JavaScript中要实现继承,其实就是实现三层含义:1.子类的实例可以共享父类的方法:2.子类可以覆盖父类 ...
随机推荐
- shell 判断目录是否存在
判断/data/www/logs/wos_log/crontab_log是否, 如果不存在则新建 if [ ! -d "/data/www/logs/wos_log/crontab_log& ...
- 开放系统的直连式存储(Direct-Attached Storage,简称DAS)
开放系统的直连式存储(Direct-Attached Storage,简称DAS)已经有近四十年的使用历史,随着用户数据的不断增长,尤其是数百GB以上时,其在备份.恢复.扩展.灾备等方面的问题变得日益 ...
- Oracle索引(Index)介绍使用
1.什么是引 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据:Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引:索引由根节点.分支节点和叶子 ...
- 读书笔记——《You Don't Know JS》
第一部:<You don't know JS: this & Object prototype> 第三章 Object 对象常量 var myObject = {}; Object ...
- java实现满天星swing&awt
一起有两个类 1.MyStar.java package day02; import java.awt.Color; import javax.swing.JFrame;import javax.sw ...
- 009-Python-面向对象
1.面向对象: 1.1什么是类? 类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念: 1.2什么是对象? 对象:就是基于类而创建的一个具体事物(具体存在的)也是特征和动作整合到一起 ...
- Spring MVC基础知识整理➣数据校验与格式化
概述 将view中Form的数据提交到后台之后,后台如何验证数据的有效性?在这里Spring MVC提供了相应的Hibernate类包(hibernate-validator-4.3.1.Final. ...
- ELK日志分析平台环境部署 (yum安装)
前言:通常体质被分散存储在不同的设备上面,在庞大的服务器集群中,我们需要集中化的管理,日志的统计和检索,一般我们使用grep和awk,wc等linux命令虽然能够实现检索和统计,但是呢,对于要求更高的 ...
- 关于ubuntu的ssh远程登录的问题
一. 安装ssh(参考:http://liuyifan789.iteye.com/blog/2068263) sudo apt-get install openssh-server openssh-c ...
- 51Nod1868 彩色树 虚树
原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1868.html 题目传送门 - 51Nod1868 题意 给定一颗 $n$个点的树,每个点一个 $[ ...