资讯专栏INFORMATION COLUMN

我的javascript学习笔记之数据类型

hss01248 / 3451人阅读

摘要:中的对象其实就是一组数据和功能的集合。对象可以通过执行操作符后跟要创建的对象类型的名称来创建。而创建类型的实例并为其添加属性和或方法,就可以创建自定义对象,如下所示

数据类型

ECMAscript有五种简单数据类型:Undefined,Null,Boolean,String,Number,还有一种复杂数据类型Object,Object本质上是由一组无序的名值组成的.

1.Undefined

Undefined类型只有一个值,undefined.使用var声明变量但未对其初始化时,这个变量的值就是undefined.

2.Null

Null只有一个值,null.
如果定义的变量准备在将来保存变量,那么最好将该变量初始化为null值,这样只要直接检查null值就可以知道相应变量是否已经保存了一个对象的引用.例如:

if (car != null){
//执行某些操作
}

3.Boolean

Boolean类型有两个值true和false
要将一个值转换为Boolean类型,可以调用转型函数Boolean():
var word = "hello world";
var boolWord = Boolean(word);

各种类型转换为Boolean类型的转换规则

数据类型 转换为true的值 转换为false的值
String 任何非空字符串 ""(空字符串)
Number 任何非0数值 0和NaN
Object 任何对象 null
Undefined n/a undefined

4.Number 4.1浮点数值

由于保存浮点数值的内存空间的数值是整数数值的两倍,因此ECMAscript会不失时机的将浮点数值转换为整数值.
如果小数点后面没有任何数字,就按整数保存,如果浮点数值本身表示得就是一个整数,那么就按整数保存(如1.0).
浮点数值最高精度是17位小数,但在算数计算时精度却不如整数.例如
if(a+b==0.3){

//不能这样!!!
alert("0.3");

};
关于浮点数值计算会产生舍入误差的问题,有一点需要明确:这是使用基于 IEEE754 数值的浮点计算的通病

4.2数值范围

[Number_MIN_VALUE,Number_MAX_VALUE]
在大多数浏览器中,这两个值是[5e-324, 1.7976931348623157e+308]
如果得到超出js的值,那么这个值会被转换为 -/= Infifity
如果某次计算的的返回正或者负的Infinity值,那么该值无法参与下一次计算.

4.3.NaN

即Not a Number
这个数值用来表示一个要返回数值的操作数未返回数值的情况,这样就不会抛出错误了.
任何涉及NaN的操作都会返回NaN(如NaN/10)
NaN与任何值都不相等,包括NaN
isNaN();
任何不能转换为数值的都返回true
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)

4.4.数值转换

有三个函数可以把非数值转换为数值
Number();//可以把任何类型转换为数值
//下面两个只能把字符串转换为数值
parseInt() ;
parseFloat();

Number()转换规则
Boolean: true -> 1 false -> 0
null: 0
undefined: NaN
如果是字符串:

如果只包含数字 将其转换为十进制数字 011 -> 11  1.1->1.1 01.1 -> 1.1
空字符串 -> 0
其他字符 -> NaN

如果是对象:

则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换 的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符 串值
5.String

字符串可以由双引号或者单引号表示
字符串一旦创建,它的值就不能改变.要改变某个变量保存的字符串,首先要销毁原来字符串,再用一个包含新值的字符串填充该变量:
var lang ="hello";
var hd = lang + "world";

转换为字符串

toString();
String();

var a =111;
a.toString();
多数情况下调用toStiring不用传递参数,但在调用数值的toString()方法时,可以传递一个参数:
var num = 10;
alert(num.toString());//10
alert(num.toString(2));//1010 2进制

在不知道转换的值是不是null或者undefined的情况下,还可以使用转型函数String();

如果值有toString()方法,则调用toString()
如果值是null,则返回"null"
如果值是undefined,则返回"undefined"
var value = 10;
alert(String(value));//"10"
要把某个值转换为字符串,可以使用加号操作符(3.5 节讨论)把它与一个字符 串("")加在一起。 6.Object

ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建 的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定 义对象,如下所示:

var o = new Object();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94483.html

相关文章

  • 写技术博客那点事

    摘要:从现在开始,养成写技术博客的习惯,或许可以在你的职业生涯发挥着不可忽略的作用。如果想了解更多优秀的前端资料,建议收藏下前端英文网站汇总这个网站,收录了国外一些优质的博客及其视频资料。 前言 写文章是一个短期收益少,长期收益很大的一件事情,人们总是高估短期收益,低估长期收益。往往是很多人坚持不下来,特别是写文章的初期,刚写完文章没有人阅读会有一种挫败感,影响了后期创作。 从某种意义上说,...

    ddongjian0000 评论0 收藏0
  • 写技术博客那点事

    摘要:从现在开始,养成写技术博客的习惯,或许可以在你的职业生涯发挥着不可忽略的作用。如果想了解更多优秀的前端资料,建议收藏下前端英文网站汇总这个网站,收录了国外一些优质的博客及其视频资料。 前言 写文章是一个短期收益少,长期收益很大的一件事情,人们总是高估短期收益,低估长期收益。往往是很多人坚持不下来,特别是写文章的初期,刚写完文章没有人阅读会有一种挫败感,影响了后期创作。 从某种意义上说,...

    NSFish 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    caspar 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    nihao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    Drummor 评论0 收藏0

发表评论

0条评论

hss01248

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<